Как я могу опционально издеваться над геокодером? - PullRequest
1 голос
/ 01 февраля 2012

Я бы хотел посмеяться над результатами гема 10000 * geocoder в некоторых моих тестах.

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

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

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

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

GeoCoder.get_data(x, y)

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

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

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

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
1 голос
/ 22 февраля 2012

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

...