我有一个具有以下签名的方法
def my_method(first, second = {})
因此可以用两种方式调用它......
my_method 'first'
my_method 'first', { second: 'value' }
我只对在测试中测试第一个参数的值感兴趣,因此我试图想出一个完成这项工作的RSpec匹配器语句。我得到的衣柜是
expect_any_instance_of(my_clazz).to receive(:my_method).with(code, anything).once
但是当我没有通过第二个参数传递以下错误时,这会失败
expected: ('first', anything)
got: ('first')
我知道你可以将不同匹配器的武器库传递到with
方法中,我找不到任何可以通过这种方式做出选择的工作。
任何人都可以深入了解如何实现这一目标吗?
答案 0 :(得分:0)
最简单的解决方案:
expect(my_instance).to receive(:my_method) do |first_param,other_param|
expect(first_param).to eq(code)
end
这样可以在两种情况下都匹配。
答案 1 :(得分:0)
避免存根响应,你应该添加' and_call_original'方法:
expect(my_instance).to receive(:my_method) do |first_param,other_param|
expect(first_param).to eq(code)
end.and_call_original