我有一个方法有以下签名
def my_method(first, second = {})
因此它可以通过两种方式调用。。。
my_method 'first'
my_method 'first', { second: 'value' }
我只对测试中第一个参数的值感兴趣,因此我尝试使用RSpec matcher语句来完成这项工作我的壁橱是
expect_any_instance_of(my_clazz).to receive(:my_method).with(code, anything).once
但如果我不传入第二个参数,则会失败,并出现以下错误
expected: ('first', anything)
got: ('first')
我知道你可以通过一个不同的匹配工具库进入
with
方法,我找不到任何东西可以这样做。有谁能洞察这是如何实现的?
最佳答案
最简单的解决方案:
expect(my_instance).to receive(:my_method) do |first_param,other_param|
expect(first_param).to eq(code)
end
这两个案子你都能猜到。
关于ruby-on-rails - RSpec参数匹配器,用于包含可选参数的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24839783/