2012-05-23 9 views
5

Tôi đang sử dụng gmaps4rails và cố gắng phát triển một số thử nghiệm.Làm thế nào để stub gmaps4rails chức năng mã hóa địa lý trong các thử nghiệm rspec?

tôi có một nhà máy

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

được rõ ràng là không được công nhận bởi Google.

Validation failed: Gmaps4rails address Address invalid 

Các cuộc gọi API cũng mất thời gian để chạy trong các thử nghiệm của tôi.

Làm cách nào tôi có thể tạm dừng cuộc gọi API?

Tôi đã thử thêm

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

vào file spec nhưng nó không có hiệu lực.

Mô hình của tôi trông như thế này

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 

Thanks cho bất kỳ ý tưởng.

Trả lời

5

Không có gì liên quan đến các số nguyên trong tên.

Tôi đoán địa chỉ vắng mặt hoặc không hợp lệ.

Dù sao, có rất nhiều cách để bỏ qua mã hóa địa lý hoặc đặt mã hóa địa lý.

Lấy cảm hứng từ gem's specs

+0

Nó không trả lời? – apneadiving

+0

Xin chào ơn. cảm ơn cho câu trả lời. Dường như địa chỉ không hợp lệ là phản hồi từ Google. Điều này có đúng không? Vậy làm thế nào để tôi có thể mã hóa địa lý? Tôi đang chạy một thử nghiệm duy nhất country_specs.rb, trong đó tôi có một trước: mỗi khối có chứa 'Country.stub (: geocode)'. Tôi đã thử một vài thứ khác '.stub_geocode',' .stub (: gmaps4rails) ', v.v. Nhưng mã hóa địa lý vẫn đang được chạy. Tôi sẽ thêm mã mô hình của tôi vào câu hỏi. Đánh giá cao bất kỳ đề xuất nào bạn có –

+0

nó đến từ đá quý. Để xem thường xuyên ở đây: https://github.com/apneadiving/Google-Maps-for-Rails/blob/master/spec/support/geocoding.rb – apneadiving