簡體   English   中英

Rails 4-Geocoder達到測試套件中的查詢限制

[英]Rails 4 - Geocoder hitting query limit in test suite

在運行測試套件時,大約一半的時間會變成紅色,因為我達到了每秒地理編碼查詢的限制:

Google Geocoding API error: over query limit.    

我正在將Geocoder gem與Google Maps / Places API結合使用。

似乎我需要設置某種睡眠選項,但是在地理編碼器文檔中,唯一提及的是rake任務。 如何設置它,或防止我的測試套件每秒發出太多地理編碼請求?

雖然不是特定於Ge​​ocoder的寶石,但最好的選擇可能是以某種方式終止該服務。

您有幾種選擇:

  1. 您可以在測試環境中打開緩存,以便每天僅發出一個外部http請求。 Rails指南提供了ActiveSupport :: Cache的一些很好的示例。 相關部分是低級緩存 雖然這可能對您有用,但我認為您的情況有些復雜。

  2. 我建議一起模擬外部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? }

避免不必要的API請求

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM