我正在使用geocoder gem为我的一个Active Record模型类添加地理编码功能。这很好用,但我实际上并不希望在单元测试期间触发地理编码。
我已经尝试通过将其添加到我的RSpec测试来删除对地理编码的调用:
之前(:每个)做
User.stub!(:地址解析).and_return([1,1]) 端
然而,当我运行我的测试时,它似乎仍然在呼唤地理编码。我做错了什么?
仅供参考,如果我在实例级别存根(例如some_user.stub!而不是User.stub!),这一切都有效。
答案 0 :(得分: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
答案 1 :(得分:3)
它的
before(:each) do
Address.any_instance.stubs(:geocode).returns([1,1])
end
与摩卡。