ruby – 使用多个方法调用的RSpec`uj_receive`行为

ruby – 使用多个方法调用的RSpec`uj_receive`行为,第1张

概述考虑以下测试: 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") 考虑以下测试:

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`行为所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1283803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存