我在我的项目中设置了ActionMailer::Base defaults
,如下所示:
class DirectorMailer < ActionMailer::Base
default to: Director.pluck(:email)
end
当我在development
环境中尝试此操作时,运行成功,因为我的数据库中已有Director。当我运行我的测试时会出现问题,因为在我填充测试数据库之前,ActionMailer默认加载,并且设置为空数组。我收到以下错误:
ArgumentError:发送邮件需要SMTP To地址。将消息smtp_envelope_to,to,cc或bcc地址设置为。
有没有办法从我的测试中重新加载ActionMailer::base
默认值?或者我应该在每个to
方法中设置mail
param?
答案 0 :(得分:0)
尝试此操作以在db中有记录之前解决ActionMailer加载问题
before do
Director.create(email: "admin@example.com")
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries = []
end
after do
ActionMailer::Base.deliveries.clear
end
it "..." do
# perform your test
end
This blog post用于帮助回答这个问题。也可能对你有用