Rails Rspec和Geocoder IP查找

时间:2017-08-11 11:54:03

标签: ruby-on-rails rspec rails-geocoder

地理编码器DOCS说明如何使用街道地址伪装地理编码器查找,但它似乎不适用于IP地址。

这是我的spec / support / geocoder.rb

Geocoder.configure(:lookup => :test)

Geocoder::Lookup::Test.add_stub(
  "1.1.1.1", [
  {
    'latitude'     => 10,
    'longitude'    => 10,
    'address'      => 'Test Address',
    'state'        => 'Test State',
    'state_code'   => 'TS',
    'country'      => 'Test Country',
    'country_code' => 'TC'
  }
]
)

Geocoder::Lookup::Test.set_default_stub(
  [
    {
      'latitude'     => 10,
      'longitude'    => 10,
      'address'      => 'Test Address',
      'state'        => 'Test State',
      'state_code'   => 'TS',
      'country'      => 'Test Country',
      'country_code' => 'TC'
    }
  ]
)

这是我的服务:

if params[:ip]
  lat = Geocoder.search(params[:ip])[0].latitude
  lng = Geocoder.search(params[:ip])[0].longitude
  venues = venues.near([lat, lng], APP_CONFIG['geo_location_radius'], order: 'average_rating DESC')
end

这是我的服务规范:

context "find featured venues by ip" do
  let(:params) do
    {
      date:     Date.today,
      featured: true,
      ip:       '1.1.1.1',
    }
  end

  it do
    aggregate_failures do
      expect(raw_venues.map { |v| v.id }.sort).to eq [venue1.id]
    end
  end

end

如果我在it区块中输入pry并尝试Geocoder.search('1.1.1.1')我会在澳大利亚找到一个“真实”的对象响应,而不是我的存根,而我正确地得到了我的存根输入类似Geocoder.search('Florence, Italy') ..

的内容

如何设置存根响应以使用IP查找?

0 个答案:

没有答案