我想要干掉我的测试套件。尝试创建一个特征,表示父工厂上has_many关系的特定值。理想情况下,这些值将从单独的工厂创建。
我想做这样的事情:
factory :room do
trait :bathroom do
type :bathroom
end
end
factory :house do
trait :one_bathroom do
association, :rooms, factory: [:room, :bathroom]
end
end
如果房子和房间之间的关系是1比1,上述情况应该有效。但是House和Room有一对多的关系,所以房子里有一系列的房间。在这个例子中,我希望创建一个房间,只有一个浴室。
有什么想法吗?
答案 0 :(得分:7)
要创建一对多关系,您可以这样:
factory :room do
factory :bathroom do
type :bathroom
end
factory :bedroom do
type :bedroom
end
end
factory :house do
ignore do
num_bathrooms 0
num_bedrooms 0
end
trait :two_bathrooms do
num_bathrooms 2
end
trait :three_bedrooms do
num_bedrooms 3
end
after(:create) do |house, evaluator|
create_list(:bathroom, evaluator.num_bathrooms, house: house)
create_list(:bedroom, evaluator.num_bedrooms, house: house)
end
end
有关详细信息,请查看此link的关联部分中的最后一个示例。