Ruby on rails Rails测试数据库在设置ActionMailer默认值后填充
我在项目中设置了Ruby on rails Rails测试数据库在设置ActionMailer默认值后填充,ruby-on-rails,rspec,actionmailer,Ruby On Rails,Rspec,Actionmailer,我在项目中设置了ActionMailer::Base defaults,如下所示: class DirectorMailer < ActionMailer::Base default to: Director.pluck(:email) end 类DirectorMailer
ActionMailer::Base defaults
,如下所示:
class DirectorMailer < ActionMailer::Base
default to: Director.pluck(:email)
end
类DirectorMailerdevelopment
环境中尝试此操作时,会成功运行,因为我的数据库中已经有控制器。问题发生在我运行测试时,因为ActionMailer默认在我填充测试数据库之前加载,并且设置为空数组。我得到了以下错误:
ArgumentError:发送邮件需要SMTP收件人地址。将邮件smtp_信封_设置为、收件人、抄送或密件抄送地址
有没有办法从我的测试中重新加载
ActionMailer::base
默认值?或者我应该在每个邮件
方法中将设置为
参数吗?在数据库中有记录之前,尝试此方法来解决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
是用来帮助回答这个问题的。也可能对你有用
谢谢,但这不起作用,
ActionMailer
在运行我的测试之前仍然加载默认值。另外,我已经在我的test.rb
环境文件中设置了ActionMailer::Base.delivery\u method=:test
,但我还是尝试了一下……最后,我决定在每个mail
方法中设置到参数,以获得最新的Director
emails数组,但问题仍然没有答案,所以我会一直打开它,直到找到解决方法。我也有同样的问题。看起来我们已经很不传统了;)