【问题标题】:Test arguments in Rspec?在 Rspec 中测试参数?
【发布时间】:2011-02-05 03:45:55
【问题描述】:

在使用 rspec 进行测试时,是否可以检查传递给方法的参数?

如果我想测试 A 类,在 A 类内部我调用 B 类,B 已经测试过了。 我唯一想测试的是 B 的传入参数。

class A
  def method
    number = 10
    B.calling(number)
  end
end

class B
  def self.calling(argument)
    # This code in this class is already testet
  end
end

如何测试 B.calling 的传入参数?

【问题讨论】:

    标签: ruby rspec


    【解决方案1】:

    如果您使用 rspec 模拟/存根,请尝试

    B.should_receive(calling).with(10)
    

    http://kerryb.github.com/iprug-rspec-presentation/ 涵盖了很多基本用法,或查看文档或 rspec 书籍。

    【讨论】:

    • should_receive 是对象的扩展(我认为),因此它同样适用于类和实例。它通过使用一些跟踪它是否被调用的代码来存根方法来工作。所以你会设置你的对象实例并且调用应该以同样的方式接收。还可以查看不同类型的匹配器(例如,参数是字符串、整数、偶数……)、调用次数、对同一对象上同一方法的不同调用的顺序等。
    • 我认为要在一个实例上测试calling,您需要在该类的实例上设置should_receive。您可能还对mock_model and stub_model 感兴趣
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多