2015-03-20 6 views
1

В контроллере я использую внешний сервис геокодирования с линией:Как установить заглушку для всех тестов?

loc = Location.geocode(@event.raw_location) 

Я хотел бы установить заглушки для всех моих тестов с:

allow(Location).to receive(:geocode).with(nil).and_return({city: nil, state: nil, country: nil}) 

Где я должен поставить этот код?

ответ

2

Вы должны объявить глобальную 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 

EDIT:

Кроме того, если вы хотите запустить этот «глобальный» 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 

 Смежные вопросы

  • Нет связанных вопросов^_^