Невозможно инициализировать фабрики фабрик ботов в движке Rails

#ruby-on-rails #integration-testing #factory-bot #rails-engines

#ruby-на-рельсах #интеграционное тестирование #завод-бот #rails-двигатели

Вопрос:

У меня есть движок Rails 5.2, и мне нужно иметь некоторый системный (с capybara) тест для запуска на нем. Я также использую фабрики для этого, вместе с factory_bot_rails драгоценным камнем.

Чтобы запустить тест, мне нужно использовать команду rails test:app:system , так как стандарт rails test:system выдает ошибку, поскольку это движок. Таким образом, системный тест выполняется в контексте фиктивного приложения.

Перед запуском он выдает ошибку Factory xxxx not initialized , я полагаю, потому, что все фабрики test/factories включены, а фиктивное приложение test/dummy включено и не может их загрузить.

Как я могу запустить системный тест для двигателя? Я думаю, что мои варианты — запустить системный тест в контексте движка или загрузить фабрики в манекен…

Ответ №1:

Да, я считаю, что вы правы в том, что вам нужно будет запустить набор тестов в контексте движка.

Я считаю, что вам нужно:

 # rails_helper.rb or spec_helper.rb

require 'factory_bot_rails'
 

Если все еще не работает, должна быть возможность добавить точный каталог с:

 require 'factory_bot_rails'

FactoryBot.definition_file_paths << File.join(File.dirname(__FILE__), 'factories')
FactoryBot.find_definitions
 

Объяснено здесь https://www.hocnest.com/blog/testing-an-engine-with-rspec /

Кроме того, убедитесь, что вы включили config.include FactoryBot::Syntax::Methods в свой rails_helper.rb