在控制器I中使用带有行的外部地理编码服务:
loc = Location.geocode(@event.raw_location)
我想为我的所有测试设置一个存根:
allow(Location).to receive(:geocode).with(nil).and_return({city: nil, state: nil, country: nil})
我应该把这段代码放在哪里?
答案 0 :(得分:3)
您应该在before(:each)
或rails_helper.rb
spec_helper.rb
RSpec.configure do |config|
config.before(:each) do
allow(Location).to receive(:geocode).with(nil).and_return({city: nil, state: nil, country: nil})
end
end
编辑:
另外,如果你想运行这个' global' before(:each)
仅针对涉及地理编码调用的测试,您可以写:
RSpec.configure do |config|
config.before(:each, geocoding_mock: true) do
allow(Location).to receive(:geocode).with(nil).and_return({city: nil, state: nil, country: nil})
end
end
然后在你的测试中:
describe Location, geocoding_mock: true do
...
end