5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails 6 に更新するとメール送信のテストに失敗した

Posted at

Rails で作成しているサンプルアプリケーションを Rails6 に更新したところ、メール送信の RSpec テストが失敗しました。

発生したこと

以下のような RSpec のシステムテストがありました。

scanario 'メール送信' do
  # メール送信する操作を実行

  mail = ActionMailer::Base.deliveries.last

  aggregate_failures do
    expect(mail.to).to eq ["admin@example.com"]
    ...
  end
end

元々、Rails のバージョンは 5.2.3 でしたが、6.0.0 に更新してテストを実行すると以下のようなエラーになりました。

 Failure/Error: expect(mail.to).to eq ["admin@example.com"]

 NoMethodError:
   undefined method `to' for nil:NilClass

ActionMailer::Base.deliveries が空のため、送信したメールが取得できずエラーになったようです。
開発環境で動作確認すると、メール送信処理自体は特に問題ないように見えます。

解決方法

テストに以下の設定を追加しました。

  ActiveJob::Base.queue_adapter.perform_enqueued_at_jobs = true
  ActiveJob::Base.queue_adapter.perform_enqueued_jobs = true

これで、ActionMailer::Base.deliveries に送信したメールが格納されるようになりました。

参考にしたページ

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?