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
类DirectorMailer 当我在
development
环境中尝试此操作时,会成功运行,因为我的数据库中已经有控制器。问题发生在我运行测试时,因为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数组,但问题仍然没有答案,所以我会一直打开它,直到找到解决方法。我也有同样的问题。看起来我们已经很不传统了;)