我不知道这是FactoryGirl的错误还是我做错了
我有两个工厂定义
factory :employee do
name "name1"
association :department
end
factory :department do
name "department1"
end
我希望以下内容可以构建员工和部门
FactoryGirl.build(:employee, :name => "employee")
但它构建了员工对象并在数据库中创建了部门。我相信它可以用于一些旧版本的FactoryGirl。
我正在使用factory_girl版本4.2.0。
如何使其构建关联对象而不是创建一个?
答案 0 :(得分:5)
是的,这是FactoryGirl的默认行为。但是,文档显示您可以为关联指定构建策略,例如:
factory :employee do
name "name1"
association :department, strategy: :build
end
请参阅https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations
答案 1 :(得分:5)
您可以使用build_stubbed
FactoryGirl.build_stubbed :employee
然后FactoryGirl将在内存中构建一个雇员对象和一个部门对象。所有这两个都有假ids,如1000+,并且正确关联。
答案 2 :(得分:0)
要小心,因为构建不会保存对象,但如果工厂有关联,它仍会向数据库发出请求。例如,如果您在部门工厂中定义了关联,则它们将保留在db中。另一方面,build_stubbed也将通过build_stubbed创建关联。
详细了解此主题here