模型在规格之前运行

时间:2014-11-10 04:29:04

标签: ruby-on-rails rspec

我有以下规范文件:

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

有什么想法吗?

0 个答案:

没有答案