gpt4 book ai didi

ruby-on-rails - 使用rspec进行Rails Geocoder测试

转载 作者:行者123 更新时间:2023-12-04 03:36:53 25 4
gpt4 key购买 nike

我试图将我的RSpec测试设置为使用 stub ,而不是使用网络进行地理编码。

我添加了这个:

before(:each) do
Geocoder.configure(:lookup => :test)
Geocoder::Lookup::Test.add_stub(
"Los Angeles, CA", [{
:latitude => 34.052363,
:longitude => -118.256551,
:address => 'Los Angeles, CA, USA',
:state => 'California',
:state_code => 'CA',
:country => 'United States',
:country_code => 'US'
}],

)

结尾

我正在使用FactoryGirl来创建测试数据,如下所示:
FactoryGirl.define do
factory :market do
city 'Los Angeles'
state 'CA'
radius 20.0
end
end

正确地对纬度/经度进行了地理编码,并将其存储在纬度/经度中。但是,当我尝试:
Market.near(params[:search])

它返回nil。。但是,如果我只是使用lookup =>:google,它会按照我的预期工作。有人有没有做过这项工作,特别是地理编码器的近方法?

最佳答案

我最终回到了一个新项目,并弄清楚了。

地理编码器上的文档实际上指出,哈希必须具有字符串键而不是符号。 geocoder docs - see notes

IE。

before(:each) do
Geocoder.configure(:lookup => :test)
Geocoder::Lookup::Test.add_stub(
"Los Angeles, CA", [{
"latitude" => 34.052363,
"longitude" => -118.256551,
"address" => 'Los Angeles, CA, USA',
"state" => 'California',
"state_code" => 'CA',
"country" => 'United States',
"country_code" => 'US'
}],

)
end

而不是我在原始帖子中是如何做到的:

:latitude => 34.052363
我最终做了一些更有活力的事情:
# frozen_string_literal: true

module GeocoderStub
def self.stub_with(facility)
Geocoder.configure(lookup: :test)

results = [
{
'latitude' => Faker::Address.latitude.first(9),
'longitude' => Faker::Address.longitude.first(9)
}
]

queries = [facility.full_address, facility.zip]
queries.each { |q| Geocoder::Lookup::Test.add_stub(q, results) }
end
end

在我的工厂:
require './spec/support/geocoder_stub'

FactoryGirl.define do
factory :facility do
name { Faker::Company.name }
rating { rand(1..5) }
street { Faker::Address.street_address }
city { Faker::Address.city }
state { Faker::Address.state }
zip { Faker::Address.zip_code }

after(:build) { |facility| GeocoderStub.stub_with(facility) }
end
end

这会为每个设施工厂添加一个地理编码器 stub ,该 stub 是为完整地址(设施中定义的方法)和邮政编码构建的。

关于ruby-on-rails - 使用rspec进行Rails Geocoder测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com