2012-05-23 1 views
5

Я использую gmaps4rails и пытаюсь разработать некоторые тесты.Как заглушить gmaps4rails функции geocode в тестах rspec?

У меня есть завод

factory :country do 
    sequence(:name) { |n| "Country#{n}" } 
end 

, который, очевидно, не распознается Google.

Validation failed: Gmaps4rails address Address invalid 

Звонки API также требуют времени для запуска в моих тестах.

Как я могу заглушить API-вызов?

Я попытался добавить

before(:each) 
    Country.stub(:geocode) 
end 

в файл спецификации, но это не имеет никакого эффекта.

Моя модель выглядит следующим образом

class Country < ActiveRecord::Base 
    acts_as_gmappable :lat => 'latitude', :lng => 'longitude' 
    def gmaps4rails_address 
    "#{self.name}" 
    end 
    geocoded_by :gmaps4rails_address 

    after_validation :geocode 
end 

Спасибо за любые идеи.

ответ

5

Не имеет ничего общего с целыми числами в названии.

Я предполагаю, что адрес отсутствует или недействителен.

Во всяком случае, существует множество способов либо пропустить геокодирование, либо заглушить его.

черпают вдохновение из gem's specs

+0

ли не отвечаешь? – apneadiving

+0

Привет apneadiving. Спасибо за ответ. Кажется, что неправильный адрес является ответом от Google. Правильно ли это звучит? Итак, как мне заглушить геокодирование? Я запускаю один тест country_specs.rb, в котором у меня есть прежде: каждый блок, который содержит 'Country.stub (: geocode)'. Я пробовал еще несколько вещей '.stub_geocode',' .stub (: gmaps4rails) 'и т. Д. Но геокодирование все еще выполняется. Я добавлю код модели к вопросу. Цените любые предложения, которые у вас есть –

+0

он исходит от драгоценного камня. Для stubbing смотрите здесь: https://github.com/apneadiving/Google-Maps-for-Rails/blob/master/spec/support/geocoding.rb – apneadiving

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

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