升级到 Rails 6 破坏了我的 ActionMailer 测试

Upgrade to Rails 6 broke my ActionMailer test

我用的是5.2.3版本,测试成功

升级到版本 6.0.0。指定 config.load_defaults 6.0config.autoloader = :classic.

因此,所有使用 ActionMailer::Base 的测试都会失败。

示例:

test "send email" do
    VCR.use_cassette('mailgun api key') do

      ActionMailer::Base.deliveries.clear
      item = items(:saved)
      visit item_path(item)
      click_button "Send"

      assert_equal 1, ActionMailer::Base.deliveries.count
    end
end

错误:

Expected: 1
  Actual: 0

我注意到 ActionMailer::DeliveryJob 更改为 ActionMailer::MailDeliveryJob

可能是因为这个问题?那怎么解决呢?

我试过把发送邮件的调用方法包装在

assert_emails 1 do
  click_button "Send"
end

之后,ActionMailer::Base.deliveries 正确填充。