Тестирование Actionmailer на Travis-CI - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть такой код в модели Rails:

after_update :email_edits

def email_edits
    EditsMailer.with(record_id: id, user_id: user.id).record_modified.deliver_later
end

Это достаточно просто для локального модульного тестирования, например,

email = EditsMailer.with(record_id: records(:one).id,
                         user_id: users(:one).id).record_modified

assert_emails 1 do
   email.deliver_now
end

... но, неизбежный результат, когда он отправляется в Travis-CI и выполняется тестирование:

1 emails expected, but 0 were sent.
Expected: 1
Actual: 0

Интеграционные тесты также не пройдены.

Я видел предложения по проверке того, добавляются ли электронные письма в очередь ActiveJob или переопределение deliver_later, так что deliver_now используется в тестах, но я уже использую deliver_now, и он все еще не работает. Даже если Тревис не разрешит отправлять электронные письма, я ожидаю, что config.action_mailer.delivery_method = :test в config/environments/test.rb все равно будет эффективным.

Другой возможный обходной путь, о котором я подумал, - попытаться отключить эти конкретные тесты на Travis, но это будет неудовлетворительно. Кто-нибудь может подсказать, в чем может быть проблема?

1 Ответ

0 голосов
/ 23 апреля 2020

В конце концов нашел ответ:

config.action_mailer.perform_deliveries = false

Устанавливался только в среде Travis из-за того, что переменная в файле учетных данных там недоступна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...