我在测试中有这个
Project.should_receive(:find).with(@project).and_return(@project)
但是当对象接收到该方法调用两次时,我必须执行
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
有没有办法怎么说
Project.should_receive(:find).with(@project).and_return(@project).times(2)
答案 0 :(得分:213)
2次:
Project.should_receive(:find).twice.with(@project).and_return(@project)
正好n次:
Project.should_receive(:find).exactly(n).times.with(@project).and_return(@project)
至少n次:
Project.should_receive(:msg).at_least(n).times.with(@project).and_return(@project)
接收计数
下的https://www.relishapp.com/rspec/rspec-mocks/v/2-13/docs/message-expectations/receive-counts处的详细信息希望有帮助=)
答案 1 :(得分:48)
rspec的新expect
语法如下所示:
2次:
expect(Project).to receive(:find).twice.with(@project).and_return(@project)
正好n次:
expect(Project).to receive(:find).exactly(n).times.with(@project).and_return(@project)
至少n次:
expect(Project).to receive(:msg).at_least(n).times.with(@project).and_return(@project)
答案 2 :(得分:0)
should_receive
相反, any_instance
期望该类接收指定次数的消息。
any_instance
通常用于存根方法。
所以第一个案例是我们想要测试的期望,而第二个案例是通过一个方法到下一行,所以我们可以继续。
答案 3 :(得分:0)
any_instance
电话上,该解决方案对我无效。
对于任何实例,我最终使用stub而不是should_receive。
Project.any_instance.stub(:some_method).and_return("value")
这对任何不适用。时间虽然。