В Rails поставки ActionMailer всегда пустые - PullRequest
0 голосов
/ 05 марта 2020

Я использую рельсы версии 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.

На данный момент даже не уверен, что попробовать кто-нибудь может заметить что-то, что я делаю неправильно, что я могу попробовать что-то еще?

...