2017-01-26 92 views
0

如何測試一個事實,即Geokit::Geocoders::MultiGeocoder.geocode(generate_address)後,才保存調用。我應該寫我的代碼不同嗎?如何測試運行時使用minitest調用某個方法?

請幫忙。

`

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 

回答

1

我會建議嘲笑你的外部API與VCR調用。實際上,您在代碼中使用的Gem在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 
相關問題