如何测试仅在保存后调用Geokit::Geocoders::MultiGeocoder.geocode(generate_address)
的事实。我应该以不同方式编写代码吗?
请帮助。
`
https://gist.github.com/bennacer860/b67583afee1bb9255938a3a621a80a54
class Playspace < ActiveRecord::Base
before_validation :geocode_address, on: [:create, :update]
def geocode_address
geo = Geokit::Geocoders::MultiGeocoder.geocode(generate_address)
# puts geo
if geo.success
self.lat = geo.lat
self.lng = geo.lng
self.state_code = geo.state_code
self.country_code = geo.country_code
self.geolocated_at = Time.now.utc
else
errors.add(:address, "Could not Geocode address #{generate_address}")
end
end
def did_address_change?
%w( address city state_code country_code postal_code lat lng ).each do |column|
return true if (self.send("#{column}_changed?"))
end
false
end
end
答案 0 :(得分:1)
我建议您使用VCR模拟外部API调用。实际上,您在代码中使用的gem使用VCR作为其own test suite。
在测试中设置VCR后,它们可能包含以下内容:
VCR.use_cassette("geocode") do
playspace.geocode_address
# Check that one of the columns changed
assert playspace.did_address_change?
end