class A def print(args) puts args endenddescribe A do let(:a) {A.new} it "receives print" do a.should_receive(:print).with("World").and_call_original a.print("Hello") a.print("World") endend
RSpec Documentation说:
Use should_receive() to set an expectation that a receiver should receive a
message before the example is completed.
所以我期待这个测试通过,但事实并非如此.它失败了以下消息:
Failures:1) A receives print Failure/Error: a.print("Hello") #<A:0x007feb46283190> received :print with unexpected arguments expected: ("World") got: ("Hello")
这是预期的行为吗?有没有办法让这个测试通过?
我使用的是ruby 1.9.3p374和rspec 2.13.1
解决方法 这应该工作:class A def print(args) puts args endenddescribe A do let(:a) {A.new} it "receives print" do a.stub(:print).with(anything()) a.should_receive(:print).with("World").and_call_original a.print("Hello") a.print("World") endend
测试失败了,因为你已经设置了一个精确的期望“应该收到:打印’世界’”,但是rspec注意到一个对象正在接收带有’Hello’的打印方法,因此它没有通过测试.在我的解决方案中,我允许使用任何参数调用print方法,但它仍然以“World”作为参数跟踪调用.
总结以上是内存溢出为你收集整理的ruby – 使用多个方法调用的RSpec`uj_receive`行为全部内容,希望文章能够帮你解决ruby – 使用多个方法调用的RSpec`uj_receive`行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)