在factory_girl
中是否有办法指定关联应指向的随机实例?例如,我有Like
个对象belongs_to
一个User
和一个SocialUnit
。我希望Like
的工厂选择一个随机的User
和一个随机的SocialUnit
来代替,而不仅仅是生成一个新的。{1}}。以下片段有效:
Factory.define :like do |f|
if User.all.count > 0
f.user User.all.sort_by{ rand }.first
else
f.association :user
end
end
它确实选择了一个随机用户,但似乎随机用户只被选中一次,因为运行此
def create_hauls
5.times do |i|
Factory(:haul)
end
end
使用相同的用户创建一堆喜欢的东西。我想这是有道理的......工厂定义了一次,然后重复使用了很多次。
我可以使用序列强制随机性;有没有办法在工厂定义中定义它,或者序列是最好的方法呢?
感谢。
答案 0 :(得分:7)
您希望在定义工厂时使用lazy attribute而不是定义用户。这将在每次使用工厂时定义用户。
f.user { (User.all.count > 0 ? User.all.sort_by{ rand }.first : Factory.create(:user)) }