我正在尝试为我的用户模型创建一些测试。当我使用devise_invitable User.invite邀请用户访问我的应用程序时!创建用户但似乎不记录电子邮件。 ActionMailer::Base.deliveries.count == 0
。在生产中发送电子邮件,当我在测试中使用我的客户电子邮件时ActionMailer::Base.deliveries.count
是正确的号码。
我是否在devise_invitable中缺少为测试配置电子邮件发送的内容?
答案 0 :(得分:1)
我在测试和开发两个环境时遇到了同样的问题,并注意到它在日志中静默返回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)
答案 1 :(得分:0)
我相信这不是一个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上,为了实际发送电子邮件你可以评论这一行,并使用你的production.rb的ActionMailer配置,但是不推荐这样做,因为你可以使用ActionMailer :: Base .deliveries排列自己来测试你的电子邮件。