2

Railsアプリでdelayed_jobを使用してメールを送信していますが、ローカルで送信するメールをテストしたいと思います。通常、私が行うことは、メーラー構成を:testに設定してから、ActionMailer :: Base.deliveriesを確認することですが、問題は、MyMailer.some_email.deliverではなくMyMailer.delay.some_emailを呼び出すと、電子メールが取得されないことです。配信に追加されました。「deliver」を呼び出さなくなったためだと思いますが、delayed_jobを使用するときに「deliver」を呼び出すことは想定されていません。

私の本番メールはすべて正常に機能します。そうしないのはテスト用のものだけです。

考え?

4

1 に答える 1

2

作業中のジョブランナーがいないため、テスト環境ではジョブが処理されていません。代わりに、ジョブがキューに追加されていることを確認する必要があります。

# Call the function
assert_not_equal Delayed::Job.count, 0, "Jobs have been added to the queue"

次に、次のように作業を行って、ジョブの動作をテストできます。

Delayed::Worker.new.work_off 1
# Check the job has been done as expected
于 2012-11-06T14:39:55.817 に答える