3
有没有一种方法来测试一个方法被调用至少一次与参数匹配器,如果该方法被调用其他参数不同的时间。这里有一个例子:rspec at_least曾经使用与条件不工作,因为我期望
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
我只是担心,试验是用一定的PARAM至少调用一次,但我得到的预期失败第一次测试称与不匹配的参数。
UPDATE 的就是我想要做的比这一点更复杂的一个更好的例子......我想要做自定义对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
当我在过去使用摩卡时,可以将块传递给with方法来评估参数。如果该块返回false,则参数期望失败。看起来rspec只允许你使用返回块检查参数(当你使用and_call_original时会被忽略)。
也没有工作,但它会导致对象变成一个完整的模拟对象。这意味着我不能再使用and_call_original。另外,文档说,它只适用于应启用语法。 –
还有一件事,如果我想对传递给它的参数使用更复杂的期望,那么这是行不通的。请参阅我对原始帖子的更新。 –