FactoryGirl不会设置我的受保护属性user.confirmed
。这里最好的做法是什么?
Factory.define :user do |f|
f.name "Tim" # attr_accessible -- this works
f.confirmed true # attr_protected -- doesn't work
end
使用我的工厂后我可以做@user.confirmed = true
,但在很多测试中都会有很多重复。
答案 0 :(得分:10)
使用after_create
挂钩工作:
Factory.define :user do |f|
f.name "Tim"
f.after_create do |user|
user.confirmed = true
user.save
end
end
答案 1 :(得分:3)
您必须在创建用户时将其传递给哈希,因为FactoryGirl正在保护它免受批量分配。
user ||= Factory(:user, :confirmed => true)
答案 2 :(得分:0)
另一种方法是使用Rails的内置角色:
#user.rb
attr_accessor :confirmed, :as => :factory_girl
当批量分配FactoryGirl广播此角色时,使这种模式成为可能。
优点:让工厂保持快速,简单和干净(回调中的代码更少)
缺点:您正在更改测试的型号代码:(
一些未经测试的解决Con的建议: