後へ      Topへ      次へ

自動テスト: メール編

参考リポジトリ: https://github.com/Bonv-dev/book_mgmt/commit/59912b0

mailers

メール配信コードの確認を行います。

一例:

test "change_status_email" do
  new_log  = logs(:new_log)
  old_log  = logs(:old_log)
  from_user = users(:librarian)
  to_users  = [users(:one), users(:two)]
  
  mail = LogMailer.change_status_email(new_log, old_log, from_user, to_users)
  
  assert_equal "蔵書のステータス変更", mail.subject
  assert_equal [from_user.email], mail.from
  assert_equal to_users.map(&:email), mail.to.sort
  
  body = mail.text_part.body.to_s
  assert_includes body, "司書名:#{from_user.name}"
  assert_includes body, "蔵書名:#{new_log.book.name}"
  assert_includes body, "変更"
end

fixtures で必要なデータを用意し、
LogMailer.change_status_email を呼びます。
mail オブジェクトを返すので、
仕様通りに値が入っているかを確認します。

Preview

サンプルプログラムでは letter_opener_web を使っているので不要ですが、
Rails デフォルトの Preview 機能もあります。

\test\mailers\previews フォルダにテストファイルを置きます。
例えば、log_mailer_preview.rb とします。

こちらはブラウザで結果を見る関係上、
環境は development になるので、
データは fixtures ではなく、データベースにあるものを使います。

log_mailer_preview.rbdef change_status_email を追加し、
パラメータを設定して、LogMailer.change_status_email を呼ぶコードを書いたとします。

ruby bin/rails s で Railsサーバーを起動し、
ブラウザで、
http://localhost:3000/rails/mailers/log_mailer/change_status_email
を開くと、メールの内容が確認できます。

http://localhost:3000/rails/mailers/ までは固定で、
log_mailer は Preview ファイル名から "_preview.rb" を除いたもの、
change_status_email はテストメソッド名になります。

Format で、HTML と plain-text を切り替えられます。

ちなみに、
Locale で、言語も切り替えられますが、
サンプルプログラムでは ja しか用意していないので使いません。


後へ      Topへ      次へ