我想确保在测试期间的某个时刻使用Foo.bar
调用true
方法。到目前为止,我只能对第一次通话断言Foo.bar
。我需要断言任何电话。
这是我到目前为止所做的工作但不起作用:
expect(Foo).to receive(:bar).at_least(:once).with("true")
Foo.bar("false")
Foo.bar("false")
Foo.bar("true")
Foo.bar("false")
第一个Foo.bar
失败,因为" false"不匹配我的" true"期望。如果在测试过程中在某些点调用Foo.bar("true")
,您将如何重写此内容?
答案 0 :(得分:1)
我认为在这种情况下你需要做我认为的方法存在等同于as_null_object
的方法:
describe Foo
describe 'testing .bar multiple times' do
before do
allow(Foo).to receive(:bar) # stub out message
end
it "can determine how many times it has been called with 'true'" do
expect(Foo).to receive(:bar).at_least(:once).with("true")
expect(Foo).to receive(:bar).at_most(:once).with("true")
Foo.bar("false")
Foo.bar("false")
Foo.bar("true")
Foo.bar("false")
end
end
end