#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