设置ActionMailer默认值后,Rails Test DB将填充

时间:2015-12-30 14:55:15

标签: ruby-on-rails rspec actionmailer

我在我的项目中设置了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?

1 个答案:

答案 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用于帮助回答这个问题。也可能对你有用