FactoryBot как создавать фабрики для взаимосвязанных моделей - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь написать тесты RSpec для устаревшего приложения ROR.У меня есть следующие модели

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) домен не может быть пустым

1 Ответ

0 голосов
/ 22 октября 2018

в обычной учетной записи и домене имеет отношение один ко многим.поэтому у каждого домена есть одна учетная запись, а учетная запись может иметь много доменов.

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
...