지오 코더 gem을 사용하고 있는데, 어떤 파일에 붙여 넣어야하는지 모르겠습니다. this code. 말해 줄 수 있어요?지오 코더 gem으로 테스트
답변
코드 조각은 사용중인 테스트 프레임 워크의 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''이 포장하는 것을 잊지 마세요, 그냥 귀하의 의견에 따라 대답을 업데이트 –
테스트 프레임 워크를 언급하지 않았으므로 구체적인 답변을 드리겠습니다.
나는 오이와 Rspec를 사용하고 있습니다. @DevDude와 @malandrina에서 위의 모든 내용이 사실이지만 코드가 어디로 갈 수 있는지에 대한보다 완전한 팁과 역 지오 코딩 (lat/lon -> 주소) 항목을 추가하는 방법은 다음과 같습니다.
스텁을 spec 폴더에 넣으십시오.
features/support/env.rb
require Rails.root.join("spec/support/geocoder_stubs")
희망이 도움이 : 오이 지원 폴더에 스텁이
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]) }
참조 : 나는 밖으로 스텁 할 여러 "조회"를 추가 할 수 있도록 내가 배열의 배열을 만들었습니다!
이 코드를 내 /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
나는 좋은 사람이 –
... RSpec에있는 사용하고 있습니다 'config.include yourModuleName'을 사용하여'spec/rails_helper.rb'에 포함시킵니다. – DevDude