【问题标题】:RSpec - mocking a class methodRSpec - 模拟类方法
【发布时间】:2011-02-17 08:56:29
【问题描述】:

我正在尝试使用 rspec 模拟类方法:

lib/db.rb

Db类 def self.list(选项) Db::Payload.list(选项) 结尾 结尾

lib/db/payload.rb

类 Db::Payload def self.list(options={}) 结尾 结尾

在我的规范中,我正在尝试设置期望 Db::Payload.list 在我调用 Db.list 时会被调用:

需要“分贝/有效载荷” 描述 Db 做 之前(:每个)做 @options = {} Db::Payload.should_receive(:list).with(@options) 结尾 它“应该构建 LIST 有效负载” db.list(@options) 结尾 结尾

问题是我总是收到以下错误:

Db::Payload:Class 的未定义方法“should_receive”

任何理解此错误的帮助将不胜感激:-)

【问题讨论】:

  • 你在你的 Rspec 配置中定义了一个 config.mock 吗?

标签: ruby-on-rails ruby mocking rspec


【解决方案1】:

你的spec_helper.rb 应该是这样的:

Spec::Runner.configure do |config|
  # == Mock Framework
  #
  # RSpec uses its own mocking framework by default. If you prefer to
  # use mocha, flexmock or RR, uncomment the appropriate line:
  #
  # config.mock_with :mocha
  # config.mock_with :flexmock
  # config.mock_with :rr
end

默认参数是config.mock_with :rspec,它启用should_receive 方法。例如,如果您使用的是 Mocha,则等同于 expects,因此请确保您使用的是正确的模拟框架。

【讨论】:

  • 完美。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2013-06-04
  • 2021-08-27
  • 1970-01-01
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多