2012-02-01 3 views
1

Я хотел бы быть в состоянии высмеять результаты жемчужины geocoder в некоторых моих тестах.Как я могу опционально подстроить геокодер?

Я использую RSpec и огурцы. В огурце я хотел бы по умолчанию издеваться над результатами Geocoder, но иметь возможность снова включить его, добавив тег. Это было бы замечательно! Нечто похожее на RSpec тоже будет хорошим. Это значительно ускорит мои тесты.

Я знаю, что есть некоторые драгоценные камни для выполнения подобных вещей, например. sunspot_test для sunspot. Есть ли что-то подобное для геокодера?

+0

im Использование драгоценного камня 'vcr' для удаленных сервисов, проверьте это! Это может быть очень полезно в вашей ситуации. https://github.com/myronmarston/vcr –

+0

Михаил - Не могли бы вы добавить это как ответ, и я отметю его правильно? Другой ответ может быть более правильным, но с использованием видеомагнитофона работал и был довольно прост в настройке. Cheers, Graeme – Simmo

+0

Конечно, почему бы и нет, я рад, что может вам помочь. –

ответ

1

Im используя vcr камень для удаленных сервисов, проверить это! Это может быть очень полезно в вашей ситуации. github.com/myronmarston/vcr

3

Вы можете использовать mocha для звонков и макетов. Если вы делаете что-то вроде (и я просто сделать это, потому что я не знаю синтаксис Geocoder):

GeoCoder.get_data(x, y) 

И это то, что вы хотите, чтобы погасить окурок и силы, чтобы вернуть что-то другое, мокко позволяет делать:

GeoCoder.stubs(:get_data).with(x, y).returns(my_own_variable) 

и это сделает любой вызов GeoCode.get_data, при пропускании по х и у, чтобы вернуть пользовательскую переменную. Тем не менее, этот окурок будет продолжаться для всех последующих вызовов во время теста, так что вы можете unstub его по телефону:

GeoCoder.unstub(:get_data) 

И полностью восстанавливает этот метод к нормальному.

С точки зрения Rspec, в блоке разрыва вы можете разблокировать. С точки зрения огурца, вы можете добавить тег как @stubs_geocoder до сценариев, и в features/support/env.rb можно добавить следующее:

Before('@stubs_geocoder') do 
    # add your stub calls 
end 

After('@stubs_geocoder') do 
    # unstub 
end 
Смежные вопросы