我有以下规范文件:
describe 'before_save autofill country code' do
it "should autofill country code" do
empty_country_code = nil
@store = Factory.build(:store, :country_code => empty_country_code)
expect{ @store.save }.to change { @store.country_code }.from(nil).to('1')
end
end
工厂的定义如下:
Factory.define :store do |store|
store.city "New York"
store.country_code "81"
end
我的模型有以下几行:
before_save :autofill_country_code
,其中
def autofill_country_code
unless self.country_code.present?
country = GeoCache.geocode(self.city).country_code
country_code = IsoCountryCodes.find(country).calling
self.country_code = country_code.tr('+', '')
end
end
根据我的理解,当我运行spec文件时,它应首先从规范运行。然而,在撬开代码一段时间后,我意识到模型首先加载。它使country_code
填充81
,因此无法运行autofill_country_code
。
之后,它转到spec文件并将country_code
设置为nil
。在我写这篇文章的时候考虑它,我的规范的expect
行可能是错的。我收到一个错误说明:
result should have been changed to "1", but is now nil
有什么想法吗?