0

Rails に Postmark gem を使用し、Rspecs テストを作成して、フォームが有効なときにメールが実際に送信されていることを確認しています。

ActionMailer::Base.deliveries.last.to が、テストしたい連絡先フォームに入力したものと一致することを確認したいと思います。

ただし、ActionMailer::Base.deliveries は常に空の配列です。本番環境でも、電子メールが正常に送信された後 (そして相手側で受信された後)、 で観察すると、配列はまだ空rails c productionです。

私は何が欠けていますか?テストでメールが送信されたことを確認するにはどうすればよいですか?

4

1 に答える 1

1

ActionMailer::Base.deliveries配列は、:testActionMailer ( docs ) によって提供される配信モードの機能です。テスト環境で Postmark gem を有効にした場合、その配列は常に空になります。

完全な統合テストを目指している場合を除き、テストで外部サービスを使用することは避け、:test配信方法に固執する必要があります。その場合は、ActionMailer で送信されたメールをテストするための DSL を提供するemail-spec gem も参照してください。

テストで実際にメールを送信したい場合は、Postmark Messages Retrieval APIを使用して、受信者またはメッセージ ID を介して送信済みメッセージを取得し、その内容を確認できます。これにより、探しているものがあれば、完全なブラック ボックス テストが可能になります。

于 2014-08-12T15:20:55.710 に答える