FactoryGirl:构建对象会创建其关联对象

ush*_*sha 1 rspec ruby-on-rails factory-bot

我不知道这是FactoryGirl的错误,还是我做错了

我有两个工厂定义

factory :employee do
  name "name1"
  association :department
end

factory :department do
  name "department1"
end
Run Code Online (Sandbox Code Playgroud)

我希望以下内容可以构建员工和部门

FactoryGirl.build(:employee, :name => "employee")
Run Code Online (Sandbox Code Playgroud)

但它构建了员工对象并在数据库中创建了部门.我相信它可以用于一些旧版本的FactoryGirl.

我正在使用factory_girl版本4.2.0.

如何使其构建关联对象而不是创建一个?

Sco*_*man 5

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

factory :employee do
  name "name1"
  association :department, strategy: :build
end
Run Code Online (Sandbox Code Playgroud)

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


Bil*_*han 5

您可以使用 build_stubbed

FactoryGirl.build_stubbed :employee
Run Code Online (Sandbox Code Playgroud)

然后FactoryGirl将在内存中构建一个员工对象和一个部门对象.所有这两个都有假的id,如1000+,并且正确关联.