我试图在很长一段时间内写一个规范。
我需要测试一下:
return
除非expect(Foo).to receive(:bar).with(some_args)
只收到Foo
一次,否则一切都会正常工作。但它肯定会多次收到bar
,因此字符串更高会因
bar
这些电话。
如何使用我需要的确切参数测试#<Foo (class)> received :bar with unexpected arguments
收到Foo
并忽略其他情况?
答案 0 :(得分:1)
如何使用allow(Foo).to receive(:bar).and_call_original
?
例如,这些测试将成功通过:
class Foo
def boo(b)
b
end
end
describe Foo do
let(:a) { Foo.new }
before do
allow(a).to receive(:boo).and_call_original
end
it do
expect(a).to receive(:boo).with(2)
expect(a.boo(1)).to eq 1
expect(a.boo(2)).to eq 2
expect(a.boo(3)).to eq 3
end
end
如果将expect(a).to receive(:boo).with(4)
添加到块中,则测试将失败。这看起来像你在找什么,对吗?