我正在使用let for Rspec创建一些依赖模型。
问题是我必须按特定顺序处理很多对象。这是我的代码,请告诉我是否有更好的方法来做事
let(:users) do
FactoryGirl.create_list(:users, 10)
end
let(:contacts) do
contacts = []
users.each do |user|
contacts << FactoryGirl.create_list(:contact, 3, user: user.id)
end
contacts
end
我不喜欢创建联系人的方式,并且想知道是否有更好的方法来使用rspec中的let,FactoryGirl。
答案 0 :(得分:2)
您可以创建一个特征:with_users
,它将构建已经包含联系人的用户:
FactoryGirl.define do
factory :user do
name "John Doe"
factory :with_contacts do
transient do
contacts_count 3
end
after(:create) do |user, evaluator|
create_list(:contact, evaluator.contacts_count, user: user)
end
end
end
end
然后在你的测试中:
let(:users) do
FactoryGirl.create_list(:users, :with_contacts, 10)
end