Пользователь.пригласить! не отправляет электронную почту в тестах

Я пытаюсь создать несколько тестов для своей пользовательской модели. Когда я приглашаю пользователей в свое приложение, используя devise_invitable User.invite! создает пользователя, но, похоже, не регистрирует электронную почту. ActionMailer::Base.deliveries.count == 0. В продакшене электронные письма отправляются, и когда я использую электронную почту своего клиента в тестах, ActionMailer::Base.deliveries.count является правильным номером.

Есть ли что-то, чего мне не хватает в devise_invitable для настройки отправки электронной почты для тестов?


person Josh Wilson    schedule 25.03.2013    source источник


Ответы (2)


Я столкнулся с одной и той же проблемой при тестировании и разработке в обеих средах и заметил, что он молча возвращает ArgumentError - An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address. в журнале.

Я не использовал Devise::InvitationsController, поэтому в моем случае был необходим вызов confirm!, так как :confirmable был включен.

User.invite!(invite_params, current_user) do |u|
  u.confirm!
end

devise_invitable (1.4.0)

person Nobu    schedule 29.01.2015
comment
потрясающий ответ. Сделал мой день! - person ez.; 11.04.2015

Я считаю, что это не материал Devise, Rails по умолчанию фактически не отправляет электронные письма в тестовой среде, у вас, вероятно, есть такие строки, как

# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test

в вашем config/environments/test.rb, чтобы на самом деле отправлять электронные письма, вы можете прокомментировать эту строку и использовать, например, конфигурации ActionMailer вашего production.rb, но это не рекомендуется, поскольку вы можете использовать массив ActionMailer::Base.deliveries себя, чтобы проверить ваши электронные письма.

person Miguelgraz    schedule 26.03.2013