ジオコーダーの宝石を使用していますが、どのファイルに貼り付けなければならないのですか?this code。教えて頂けますか ?ジオコーダーの宝石でテストする
答えて
このコードは、使用しているテストフレームワークのSETUP部分に置く必要があります。 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'の 'でこれをラップすることを忘れないでください、私はちょうどあなたのフィードバックどおりの答えを更新し –
あなたがテストフレームワークを述べていないので、私は具体的な回答をします。
私は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. 靴や宝石
- 3. Thumbs_Up宝石: `Having`
- 4. がletter_opener宝石
私は、良いものは –
... RSpecのいる使用しています'config.include yourModuleName'を使って' spec/rails_helper.rb'にそれを含めています – DevDude