0

我已经查看了一些 Gmaps4rails 存根问题,并认为我非常接近,但并不完全在那里。原谅我:在 Rails 中进行 stubbing 和 mocking 非常新。

所有这些代码都适用于现实世界,只是试图让它在测试期间跳过地理编码。现在测试有时会工作,有时会因Gmaps4rails 地址地址无效错误而失败

所以,我有一个非常简单的party.rb 模型,它是acts_as_gmappable:

def gmaps4rails_address
   "#{self.city}, #{self.country}" 
end 

我从 github 粘贴了 geocoding.rb 并将其放在 /spec/support 中,未修改

但是,我似乎无法告诉我的party_controller_spec 使用存根而不是真实的存根。我确定我错过了一些简单的东西......我试过了:

include Geocoding

乃至

Gmaps4rails.set_gmaps4rails_options!({:msg => "quack"})

并且我没有看到“quack”作为错误消息,我看到Validation failed: Gmaps4rails address Address invalid

也试过:

Gmaps4rails.set_gmaps4rails_options!({:validation => false, :check_process => false, :process_geocoding => false})

但是没有效果。

我的 factory.rb 有一个简单的 :party 定义:

Factory.define :party do |party|
party.name      "Thai New Year"
party.city      "Phuket"
party.country   "Thailand"
...
end

所以,我很确定我没有正确地告诉 rspec 使用存根的 Gmaps4rails。那么,我将告诉 Gmaps4rails 使用您的 stub_geocoding 方法而不是实际尝试执行地理编码的代码放在哪里?

任何帮助将不胜感激......对不起,如果这是一个平凡的问题。

戴夫

4

1 回答 1

4

如果您不想要任何地理编码,请执行此操作:

Factory.define :party do |party|
  party.name      "Thai New Year"
  party.city      "Phuket"
  party.country   "Thailand"
  party.gmaps     true #<= this is what tells the gem not to fire geocoding
  party.latitude  whatever_if_relevant
  party.longitude whatever_if_relevant
  ...
end
于 2012-11-06T16:57:00.830 回答