まず、config/environments/test.rb で下記のように追加する。
config.action_mailer.delivery_method = :test
# config.action_mailer.perform_deliveries = false
「config.action_mailer.delivery_method = :test」を設定すると、specの中でActionMailerインスタンスを Base::ActionMailer.deliveries.last で取得できる。testの下記方はこの Base::ActionMailer.deliveries.last の戻り値に対して、
mailer = Base::ActionMailer.deliveries.last
expect( mailer.subject ).to eq "本日は晴天なり"
のようにして書く。
添付ファイルがある場合のtest
添付ファイルがある場合、メールはマルチパートになるため添付なしとtestがちょっと変わる。
mailer = Base::ActionMailer.deliveries.last
expect( mailer.subject ).to eq "合格通知"
expect( mailer.from ).to eq "goukaku@test.com"
# 本文はマルチパートになるので下記のように書く
expect( mailer.parts[0].body ).to eq "サクラサク"
# 添付ファイルの件名チェック
expect( mailer.attachments[0].filename ).to eq "合格証明書.txt"
ちなみに、「config.action_mailer.perform_deliveries = false」をonにすると、メールが送信されなくなる。開発環境での誤送信などの防止にはいいがtestできなくなってしまうのでtest環境ではoffがよさげ。
# 余談だけどこのブログで使っている Syntax Hilighterはスマホで見るとうまく動かないらしい。スマホからご覧の場合jsのサンプルソースが見れないようなので(その他のソースもハイライトされてない)PCで見てくださいませ。(ん~どうしよう。)
0 件のコメント:
コメントを投稿