Как запустить инициализаторы Railtie в моих тестах?

У меня есть своя жемчужина, и моя Railtie выглядит как...

class MyRailtie < Rails::Railtie
  initializer "my_railtie.configure_rails_initialization" do
    # some initialization behavior
  end
end

и я пытаюсь проверить это, но в тестах инициализатор никогда не вызывается. И я заметил, что у меня есть некоторые зависимости в других гемах, которые также имеют инициализатор, и они тоже не вызываются.

Вы знаете, что мне делать, кроме того, чтобы требовать файл?

2 ответа

Поскольку инициализаторы являются частью функциональности Rails, вам нужно загрузить этот Railtie в приложение Rails, чтобы он вызывался автоматически. Обычно это делается путем создания небольшого приложения на Rails внутри вашей папки spec, но это сложно настроить вручную. К счастью, есть отличная жемчужина под названием сгорание, которая делает испытания двигателей (или драгоценных камней с рельсами) легким делом. Он позаботится о настройке приложения Rails для вас и обеспечит выполнение ваших тестов в этой среде Rails (включая запуск этого инициализатора).

В before или же setup Блок в ваших тестах вы можете сделать что-то вроде этого:

Для Рейлти

MyRailtie::Railtie.initializers.each(&:run)

Для двигателя

MyEngine::Engine.initializers.each(&:run)
Другие вопросы по тегам