Tag: rspec mocks

Rspec / mocks引发未初始化的常量BasicObject :: RSpec

我刚刚安装了rspec和rspec-mocks,但我无法运行最简单的设置 irb(main):001:0> require ‘rspec’ => true irb(main):004:0> require ‘rspec/mocks’ => false irb(main):006:0> RSpec::Mocks::setup(Object.new) NameError: uninitialized constant BasicObject::RSpec from /usr/local/Cellar/ruby/1.9.1-p376/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.13.0/lib/rspec/mocks.rb:60:in `block in add_extensions’ from /usr/local/Cellar/ruby/1.9.1-p376/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.13.0/lib/rspec/mocks.rb:60:in `class_eval’ from /usr/local/Cellar/ruby/1.9.1-p376/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.13.0/lib/rspec/mocks.rb:60:in `add_extensions’ from /usr/local/Cellar/ruby/1.9.1-p376/lib/ruby/gems/1.9.1/gems/rspec-mocks-2.13.0/lib/rspec/mocks.rb:11:in `setup’ from (irb):6 from /usr/local/Cellar/ruby/1.9.1-p376/bin/irb:12:in `’ 我想知道什么是错的,我需要加载一些其他的gem吗?

如何使用rspec / rspec-mocks来存根类方法

我正在使用rspec-mock进行测试驱动开发。 我开始实现一个单独的类,并使用rspec-mock来模拟/存根其他类。 模拟尚未实现的类的对象效果很好。 但是,当我尝试模拟一个尚不存在的类的类方法时,我还没有成功。 我的类“Hashes”应该有一个类方法“calculate_hashes”接收文件名并返回一个哈希值。 我试过了 allow(Hashes).to receive(:calculate_hash) do |file| # looks up what to return end 给出错误“哈希不是一个类”。 然后我实施了一个类“哈希” class Hashes end 然后只尝试以相同的方式存根类方法。 这给出了错误“Hashes没有实现:calculate_hash”当我然后将方法添加到我的类定义时: class Hashes def self.calculate_hash(filename) end end 它最终工作,我的这个类方法的存根使用“allow(Hashes)”工作,如上例所示。 我只是想知道是否有一种方法可以在不编写此类骨架的情况下完成此操作。 或者我可能试图以不恰当的方式完成某些事情? 或者rspec-mock可能不是正确的工具呢? 任何帮助是极大的赞赏。