[英]Rails 4 - Geocoder hitting query limit in test suite
在運行測試套件時,大約一半的時間會變成紅色,因為我達到了每秒地理編碼查詢的限制:
Google Geocoding API error: over query limit.
我正在將Geocoder gem與Google Maps / Places API結合使用。
似乎我需要設置某種睡眠選項,但是在地理編碼器文檔中,唯一提及的是rake任務。 如何設置它,或防止我的測試套件每秒發出太多地理編碼請求?
雖然不是特定於Geocoder的寶石,但最好的選擇可能是以某種方式終止該服務。
您有幾種選擇:
您可以在測試環境中打開緩存,以便每天僅發出一個外部http請求。 Rails指南提供了ActiveSupport :: Cache的一些很好的示例。 相關部分是低級緩存 。 雖然這可能對您有用,但我認為您的情況有些復雜。
我建議一起模擬外部HTTP服務。 Thoughtbot在設置Webmock方面有一些過時但仍然相關的指南, Webmock是一種流行的用於模擬外部HTTP服務的庫。 它與所有流行的測試框架很好地集成在一起。
希望這可以幫助。
自述文件中介紹了使用Geocoder gem進行測試的正確方法
將此添加到您的spec/support
(或等效目錄)目錄中,錯誤消息將停止。
# spec/support/geocoder.rb
Geocoder.configure(:lookup => :test)
Geocoder::Lookup::Test.set_default_stub(
[
{
'latitude' => 40.7143528,
'longitude' => -74.0059731,
'address' => 'New York, NY, USA',
'state' => 'New York',
'state_code' => 'NY',
'country' => 'United States',
'country_code' => 'US'
}
]
)
嘗試這個 :
after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.