Как запустить инициализаторы 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)