Более подробно рассмотрим решение этой проблемы:
В вашем config / enviroments / test.rb по умолчанию у вас должна быть строка config.action_mailer.delivery_method = :test
То, что это делает, говорит ActionMailer не отправлять электронную почту в обычном режиме, а скорее сохранять отправленную электронную почту в массиве ActionMailer::Base.deliveries
. Это полезно для тестирования, поскольку вы можете определить, сколько электронных писем было отправлено с помощью метода inspect, count, length в массиве ActionMailer :: Base.deliveries.
Однако, если вы установите метод доставки, например, config.action_mailer.delivery_method = :smtp
, это может перезаписать ваш предыдущий delivery_method =: test; следовательно, ваш ActionMailer::Base.deliveries
не будет заполнен.
Я сделал именно это, используя MailCatcher для просмотра отправляемых писем, в результате чего мои тесты не прошли, хотя я был уверен, что письма отправлялись правильно!
Итак, убедитесь, что вы не устанавливаете метод delivery_method, кроме: test, в своей тестовой среде.
В качестве примечания: если вы используете Devise, вы можете вместо этого проверить массив Devise.mailer.deliveries
.