Я хочу создать интеграционный тест для сериализации XML, который извлекает данные из базы данных, а затем создает файлы XML.
Мне нужно иметь несколько фабрик со статическими атрибутами, т. Е. Они всегда имеют одинаковые значения, чтобы можно было устанавливать ожидания для сгенерированного XML.
Так, например, на моей User
фабрике у меня есть:
factory :static_user, class: User do
id { '78474912-7728-4478-8810-151a1347d546' }
role { :admin }
email { 'john.root@mail.com' }
password { 'password' }
password_confirmation { 'password' }
created_at { Time.parse 'Wed, 26 Sep 2018 11:06:59 UTC +00:00' }
updated_at { Time.parse 'Wed, 26 Sep 2018 11:06:59 UTC +00:00' }
end
Хотя, когда я пытаюсь использовать его как ассоциацию на другом заводе, мне нужно обернуть его пользовательской инициализацией:
FactoryBot.define do
factory :static_order, class: Order do
association :user, factory: :static_user do
initialize_with { User.find_or_initialize_by(build(:static_user)) }
end
end
end
Как мне этого избежать?
Я мог бы использовать DatabaseCleaner
gem, чтобы база данных была пустой перед каждым тестом, но я получу и ошибку дублированных атрибутов (которые имеют уникальную проверку), если я попытаюсь создать список элементов.