我使用Rspec和工廠女孩來設置我的測試。我有一個用戶工廠,然後我用rspec進行測試。帶工廠的Rspec和來自模型的虛擬屬性不起作用?
在一個名爲GameEngine ::公式,我有一個虛擬屬性模塊(實際上馬力已經是我的模型,它在這裏覆蓋):
def hp
((self[:hp] * 5) * (self.level + 1)) if self.first_class == 'Fighter'
((self[:hp] * 4) * (self.level + 1)) if self.first_class == 'Ranger'
((self[:hp] * 2) * (self.level + 1)) if self.first_class == 'Magician'
end
當我刪除該虛擬ATTRIB,測試工作正常。但是,如果我離開這裏,我得到的是:
Failure/Error: let(:user) { Factory(:user) }
ActiveRecord::RecordInvalid:
Validation failed: Hp can't be blank
廠:
Factory.define :user do |f|
f.sequence(:username) { |n| "test#{n}" }
f.password "1234567890"
f.sequence(:email) { |n| "test#{n}@test.com" }
f.first_class 'Ranger'
f.hp 10000
f.strength 100
f.magic 100
f.dexterity 100
f.accuracy 10
f.armor 20
f.level 1
end
這是爲什麼?
什麼是您的工廠是什麼樣子? – raidfive 2011-03-06 03:59:02
我加了工廠。我實際上通過改變ifs結構thanx來解決這個問題。 – Spyros 2011-03-06 04:10:12