FactoryBot 如何为相互关联的模型创建工厂



我正在尝试为旧版 ROR 应用程序编写 RSpec 测试。我有以下型号

class Domain < ActiveRecord::Base
belongs to :account
...
end
class Account < ActiveRecord::Base
belongs to :domain
...
end
FactoryBot.define do
factory :domain do
name 'domain-1'
account { association :account, domain: @instance }
end
end
FactoryBot.define do
factory :account do
name 'account-1'
domain { association :domain, account: @instance }
end
end

我可以创建

FactoryBot.create(:domain)FactoryBot.create(:account)失败,"域不能为空">

在正常情况下,帐户和域具有一对多关系。 因此,每个域都有一个帐户,帐户可以有多个域。

class Domain < ActiveRecord::Base
belongs_to :account
...
end
class Account < ActiveRecord::Base
has_many :domains
...
end

您的工厂以递归方式相互调用。 它应该工作:

FactoryBot.define do
factory :domain do
name 'domain-1'
account
end
end
FactoryBot.define do
factory :account do
name 'account-1'
end
end

最新更新