创建 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)
,系统会为您创建关联。如果您确实关心关联(例如,您的测试需要对其进行处理),那么您在问题中如何称呼它是正确的方式。
我是 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)
,系统会为您创建关联。如果您确实关心关联(例如,您的测试需要对其进行处理),那么您在问题中如何称呼它是正确的方式。