稍后交付无法在 Rails 5 的测试环境中运行

Jam*_*azs 4 ruby-on-rails ruby-on-rails-4 rails-activejob ruby-on-rails-5

基本上,测试配置的设置与 Rails 4 中的工作方式完全相同(传递方法设置为测试等),除了我已替换的已弃用的选项之外,邮件仅使用 Deliver_now 发送,而不是 Deliver_later。Deliver_later 在开发环境中工作,即使两个环境之间的配置相同。

测试环境邮件配置:

config.action_mailer.delivery_method = :test
config.action_mailer.perform_deliveries = true
config.action_mailer.perform_caching = false
config.action_mailer.raise_delivery_errors = true
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
Run Code Online (Sandbox Code Playgroud)

小智 7

我有同样的问题,我转而诉诸于使用断言

enqueued_jobs.size
Run Code Online (Sandbox Code Playgroud)

断言我的邮件已排队。另外,我对使用 Deliver_now 的邮件程序类进行了单元测试。

这需要包括 ActiveJob:TestHelper

class ActiveSupport::TestCase
  include ActiveJob::TestHelper
end
Run Code Online (Sandbox Code Playgroud)