Rspec 利用“工厂女孩”来创造一种个性特征有很多关系

Rspec 利用“工厂女孩”来创造一种个性特征有很多关系,rspec,associations,factory-bot,has-many,traits,Rspec,Associations,Factory Bot,Has Many,Traits,我想干掉我的测试套件。试图创造一种特性来代表一个产品的特定价值在父工厂中有很多关系。理想情况下,这些值将由单独的工厂创建 我想这样做: factory :room do trait :bathroom do type :bathroom end end factory :house do trait :one_bathroom do association, :rooms, factory: [:room, :bathroom] end end 如果房屋

我想干掉我的测试套件。试图创造一种特性来代表一个产品的特定价值在父工厂中有很多关系。理想情况下,这些值将由单独的工厂创建

我想这样做:

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,则上述方法应有效。但是房子和房间有一对多的关系,所以房子里有一系列的房间。在这个例子中,我希望创建一个只有一个浴室的房间阵列


有什么想法吗

要创建一对多关系,您可以这样做:

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
查看本文关联部分的最后一个示例以了解更多详细信息