我使用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