Я использую рельсы версии 4.2.11.1
и rspe c 3.7.0
. Это моя конфигурация тестовой среды (соответствующая часть):
config.action_mailer.delivery_method = :test
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Мой тест пытается проверить, что электронная почта отправляется следующим образом:
expect { MyMailer.reminder_1({ order_id: order.id }).deliver_now }
.to change { ActionMailer::Base.deliveries.count }.by(1)
Этот тест не проходит с этим сообщением:
expected `ActionMailer::Base.deliveries.count` to have changed by 1, but was changed by 0
Интересно, что я вижу, что электронная почта действительно отправляется в test.log:
MyMailer#reminder_1: processed outbound mail in 235.8ms
Sent mail to test@test12334.com (19.1ms)
Date: Wed, 04 Mar 2020 20:14:23 -0500
Я поместил точку останова в метод MyMailer#reminder_1
и оценил self.message.perform_deliveries
просто чтобы быть уверенным, и это вернулось как true
.
Мой тип теста type: :model
Я не знаю, если это имеет значение.
Я попытался запустить консоль рельсов в тестовая среда RAILS_ENV=test bundle exec rails c
проверка ActionMailer::Base.deliveries.count
с оценкой 0.
Затем я вызвал MyMailer.reminder_1({ order_id: order.id }).deliver_now
, после этого ActionMailer::Base.deliveries.count
по-прежнему 0.
На данный момент даже не уверен, что попробовать кто-нибудь может заметить что-то, что я делаю неправильно, что я могу попробовать что-то еще?