有没有办法测试方法是否使用参数匹配器至少调用一次,如果该方法使用不同的参数调用其他时间。这是一个例子:
class A
def test(a)
puts "AAA"
end
end
it "should work" do
a = A.new
expect(a).to receive(:test).with(1).at_least(:once)
a.test 2
a.test 1
a.test 3
end
我只关心使用某个参数调用至少一次测试,但是第一次使用不匹配的参数调用测试时会出现期望失败。
更新 我想要做的更好的例子比这更复杂...我想对params进行自定义匹配......更像是
it "should work" do
a = A.new
expect(a).to receive(:test).at_least(:once).with(an_instance_of(Fixnum)) do |i|
expect(i).to be > 2
end
a.test 2
a.test 1
a.test 3
end
当我过去使用mocha时,你可以将一个块传递给with方法来评估params。如果块返回false,则param期望失败。似乎rspec只允许你使用返回块检查params(当你使用and_call_original时会被忽略)。
答案 0 :(得分:0)
我认为您需要使用as_null_object
基本上忽略其他参数的调用。
更改行:
a = A.new
要:
a = A.new.as_null_object