1

我不知道这是 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 版。

我如何让它构建关联的对象而不是创建一个?

4

3 回答 3

5

是的,这是 FactoryGirl 的默认行为。但是,文档显示您可以为关联指定构建策略,例如:

factory :employee do
  name "name1"
  association :department, strategy: :build
end

https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md#associations

于 2013-10-16T15:22:21.393 回答
5

您可以使用build_stubbed

FactoryGirl.build_stubbed :employee

然后FactoryGirl会在内存中建立一个员工对象和一个部门对象。两者都有 1000+ 之类的假 id,并且正确关联。

于 2013-10-16T15:28:20.980 回答
0

小心,因为 build 不会保存对象,但如果工厂有关联,它仍然会向数据库发出请求。例如,如果您在部门工厂中定义了关联,它们将被持久保存在数据库中。另一方面,build_stubbed 也将通过 build_stubbed 创建关联。

在此处阅读有关此主题的更多信息

于 2018-05-04T10:05:26.853 回答