创建 Factorybot 到 return 个实例,包括关联实例

Creating a Factorybot to return instance including associated instances

我是 Rails 和 Rspecs 的新手。所以如果这是未成年人,请容忍我的问题。

我有两个关联的工厂机器人,如图所示:

specs/factories/table_definition.rb

FactoryBot.define do
  factory :table_definition do
    association :project, factory: :project
    name { 'table_definition' }
  end
end

specs/factories/projects.rb

FactoryBot.define do
  factory :project do
    association :user, factory: :user
    name { 'project_name' }
  end
end

这是我的 rspec:

require 'rails_helper'

RSpec.describe TableDefinition, type: :model do
  let(:table_definition) { create(:table_definition, project: project) }
  let(:project) { create(:project, user: user) }
  
  it { }
  it { }
end

如您所见,我正在为 project 单独创建实例并将其与 table_definition 变量链接。我只需要工厂机器人实例 table_definition 默认关联一个 project。我们怎样才能做到这一点?

实际上,我的项目中有10多个相互关联的模型,为了简单起见,我只提供了两个。我相信应该有更好的方法来做到这一点。感谢您的帮助。

-桑托斯

FactoryBot.define do
  factory :table_definition do
    project
    name { 'table_definition' }
  end
end

注意 project 等同于 association :project, factory: :project

如果您不关心关联的对象,您可以简单地调用它 create(:table_definition),系统会为您创建关联。如果您确实关心关联(例如,您的测试需要对其进行处理),那么您在问题中如何称呼它是正确的方式。