У меня есть такой код в модели 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, но это будет неудовлетворительно. Кто-нибудь может подсказать, в чем может быть проблема?