class Foo
def bar(a, b)
...
Foo.should_receive( :bar )
期望使用任何参数调用bar。
Foo.should_receive( :bar ).with( :baz, :qux )
期望:baz和:qux作为params传入。
如何期待第一个参数相等:baz,而不关心其他参数?
答案 0 :(得分:40)
使用anything
匹配器:
Foo.should_receive(:bar).with(:baz, anything)
答案 1 :(得分:9)
还有另一种方法,这是receive
的块形式:https://relishapp.com/rspec/rspec-mocks/v/3-2/docs/configuring-responses/block-implementation#use-a-block-to-verify-arguments
expect(Foo).to receive(:bar) do |args|
expect(args[0]).to eq(:baz)
end
答案 2 :(得分:7)
对于 Rspec 1.3 anything
,当您的方法收到哈希作为参数时,该功能无效,请尝试使用{{1} }:
hash_including(:key => val)