describe 'Spec' do
    let( :qux    ){ double 'qux' }
    let( :params ){ :foo, :bar, :baz }

    specify 'success' do
      qux.use :foo, :bar, :baz

      expect( qux ).to have_received( :use ).with params

这会生成语法错误,因为:foo, :bar, :baz不是有效的ruby。
做这件事的好方法是什么?

最佳答案

如果你想做类似的事情,把参数放在一个数组中并使用splat。另外,由于您正在模拟qux方法,因此您将不得不终止use方法:

RSpec.describe 'Spec' do
    let( :qux    ){ double 'qux' }
    let( :params ){ [:foo, :bar, :baz] }

    specify 'success' do
      qux.stub(:use)
      qux.use :foo, :bar, :baz
      expect( qux ).to have_received( :use ).with *params
    end
end

关于ruby - 如何在RSpec期望中将let与多个参数一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27830167/

10-10 19:17