9

我正在使用地理编码器 gem 将地理编码功能添加到我的 Active Record 模型类之一。这很好用,但我实际上并不希望在单元测试期间触发地理编码。

我尝试通过将其添加到我的 RSpec 测试中来消除对地理编码的调用:

before(:each) 做
User.stub!(:geocode).and_return([1,1]) end

但是,当我运行测试时,它似乎仍然在调用地理编码。我究竟做错了什么?

仅供参考,如果我在实例级别存根(例如 some_user.stub!而不是 User.stub!),这一切都有效。

4

2 回答 2

9

如果您想在实例级别使用存根,您应该使用 RSpec 之外的其他模拟框架。mocha例如(将以下内容添加到)spec/spec_helper.rb

Spec::Runner.configure do |config|
  config.mock_with :mocha
end

http://rspec.info/documentation/mocks/other_frameworks.html

现在,您可以any_instance在测试中使用:

before(:each) do
 User.any_instance.stub(:geocode).and_return([1,1]) 
end
于 2011-04-13T08:02:26.867 回答
3

它是

before(:each) do 
  Address.any_instance.stubs(:geocode).returns([1,1])
end

用摩卡。

于 2011-06-08T17:39:09.977 回答