我正在尝试为旧版 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