我有一个用户模型的after_create回调,它会向管理员发送一封电子邮件,以便他可以批准该帐户。它在开发模式下完美运行,但是当我运行我的Capybara / RSpec测试时,它失败并出现以下异常:
ArgumentError:
An SMTP To address is required to send a message. Set the message smtp_envelope_to, to, cc, or bcc address.
我确实将config.action_mailer.delivery_method设置为:test in config / environments / test.rb。为什么它在测试环境中尝试使用SMTP?为什么这只发生在这个电子邮件传递(在模型中)而不是其他传递(使用设计宝石)?
以下是用户模型的摘录:
class User < ActiveRecord::Base
after_create :send_admin_mail
protected
def send_admin_mail
puts ActionMailer::Base.delivery_method #prints test!
ReviewMailer.new_user_waiting_for_approval(self).deliver
end
end
答案 0 :(得分:5)
错误表示您错过了to
地址。由于您正在向管理员发送电子邮件,我猜这封电子邮件根据Rails环境而有所不同,您可以在某处配置此电子邮件。确保为测试环境配置了一个。
答案 1 :(得分:4)
尝试设置:
config.action_mailer.raise_delivery_errors = false
在test.rb文件中,如果不存在则添加它。