回答
這一段代碼應在任何測試框架您使用的設置部分。
如果使用RSpec的,它應該在這裏:
describe Something do
before(:all) do
Geocoder.configure(:lookup => :test)
Geocoder::Lookup::Test.add_stub(
"New York, NY", [
{
'latitude' => 40.7143528,
'longitude' => -74.0059731,
'address' => 'New York, NY, USA',
'state' => 'New York',
'state_code' => 'NY',
'country' => 'United States',
'country_code' => 'US'
}
]
)
end
end
的替代方法把你的存根測試設置中是spec/support
定義它們:
規格/支持/ geocoder.rb
Geocoder.configure(lookup: :test)
Geocoder::Lookup::Test.add_stub(
...
)
end
雖然這種方法有將神祕客人引入到測試中的缺點,但它乾的事情。
不要忘記與你選擇的名稱來包裝這個在'module',如果你使用'config.include yourModuleName'將它包含在'spec/rails_helper.rb'中 –
既然你沒有說明你的測試框架,我會給出一個具體的答案。
我正在使用Cucumber和Rspec。雖然以上所有內容均來自@DevDude和@malandrina,但對於代碼可以使用的位置以及如何添加用於反向地理編碼(緯度/經度 - >地址)的條目,此處提供了更完整的提示:
把你的存根放在spec文件夾中。我創建了一個數組的數組,這樣我可以添加多個「查找」被滅掉:
spec/support/geocoder_stubs.rb
addresses = {
"230 West 43rd St., New York City, NY 10036" => {
'latitude' => 40.7573862,
'longitude' => -73.9881256,
'address' => '230 West 43rd St., New York City, NY 10036',
'city' => 'New York City',
'state' => 'New York',
'state_code' => 'NY',
'country' => 'United States',
'country_code' => 'US'
},
[40.75747130000001, -73.9877319] => {
'latitude' => 40.75747130000001,
'longitude' => -73.9877319,
'address' => '229 West 43rd St., New York City, NY 10036',
'city' => 'New York City',
'state' => 'New York',
'state_code' => 'NY',
'country' => 'United States',
'country_code' => 'US'
},
"Worthington, OH" => {
'latitude' => 40.09846115112305,
'longitude' => -83.01747131347656,
'address' => 'Worthington, OH',
'city' => 'Worthington',
'state' => 'Ohio',
'state_code' => 'OH',
'country' => 'United States',
'country_code' => 'US'
},
}
Geocoder.configure(:lookup => :test)
addresses.each { |lookup, results| Geocoder::Lookup::Test.add_stub(lookup, [results]) }
參考您在黃瓜支持文件夾存根:
features/support/env.rb
require Rails.root.join("spec/support/geocoder_stubs")
希望這有助於!
我把這個代碼在我/config/initializers/geocoder.rb
與有條件的Rails.env.test?
。我嘗試了上面提到的@devDude的方法,它工作得很好,但我只是不希望任何地理編碼真正的調用是從我的rspec測試中做出的,甚至是錯誤的(在很多文件中有很多規範依賴於此)+這種方法適用於任何類型的測試框架(無論是testunit還是mintests或者也可以使用黃瓜)。
這是我/config/initializers/geocoder.rb
文件看起來像。
if Rails.env.test?
Geocoder.configure(:lookup => :test)
# Particular Look up
Geocoder::Lookup::Test.add_stub(
"New York, NY", [
{
'latitude' => 40.7143528,
'longitude' => -74.0059731,
'address' => 'New York, NY, USA',
'state' => 'New York',
'state_code' => 'NY',
'country' => 'United States',
'country_code' => 'US'
}
]
)
#default stub
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'
}
]
)
else
Geocoder.configure(
:timeout => 3, # geocoding service timeout (secs)
:lookup => :google, # name of geocoding service (symbol)
:language => :en, # ISO-639 language code
:units => :mi, # :km for kilometers or :mi for miles
:distances => :linear # :spherical or :linear
)
end
- 1. 地理編碼2地址與地理編碼器寶石
- 2. 驗證與地理編碼器寶石
- 3. 紅寶石地理編碼器寶石找到郵政編碼
- 4. 地理編碼器寶石 - Ruby On Rails
- 5. 地理編碼寶石創建問題
- 6. Geocoder寶石反向地理編碼
- 7. Rails的內連接與地理編碼寶石
- 8. 驗證/緯度與地理編碼寶石
- 9. 紅寶石地理編碼器多個反向地理編碼器
- 10. Rspec測試失敗與decent_exposure寶石
- 11. 使用轉寶石與測試::單位
- 12. 紅寶石測試:塊與方法
- 13. 測試控制器與RSpec的寶石
- 14. 紅寶石自動測試與add_mapping
- 15. 地理編碼我的位置,並顯示與谷歌,地圖換軌寶石
- 16. launchy寶石終止測試
- 17. 紅寶石Rspec測試
- 18. 谷歌地理編碼API HTTP請求被拒絕 - 紅寶石
- 19. Rails的地理編碼器的寶石顯示結果
- 20. 紅寶石地理編碼器訪問結果信息
- 21. 谷歌業務的紅寶石地理編碼
- 22. 與redgreen寶石耙測試始終以「0測試」
- 23. 通過街道地址更新地理編碼器寶石地理編碼的經度/緯度
- 24. 調試寶石紅寶石
- 25. 紅寶石串編碼力
- 26. 紅寶石編碼問題
- 27. ASCII85 BASE64紅寶石編碼
- 28. 編碼紅寶石1.8.7串
- 29. 紅寶石1.9.2 Find.find編碼
- 30. 紅寶石文件編碼
我使用rspec的... –
我剛剛更新的答案,按您的反饋,有一個好 – DevDude