0
0

More than 1 year has passed since last update.

【rails + minitest】 flashに格納したメッセージをassertする方法

Last updated at Posted at 2022-10-19

概要

minitestでrailsのテストを書いていてふと、
「flashの内容でコードの挙動を確認出来れば、testコードの可読性があがりスマートなのでは?🤔」と思ったので、書き方をメモします。

結論

以下のように記載すればOK。

assert flash.to_hash.value? "想定されるメッセージ"

詳細

Flashクラスはよくわからないので、to_hashでハッシュに変換したのち、value?メソッドで格納されたメッセージを検索してます。

これを使えば、以下のように、テストコードの可読性がグンッと上がって幸せ

sample-test
test "records-destroy" do
# 正常系
  sign_in(@user2) 
  delete record_path(1) 
  assert flash.to_hash.value? "レコードを破棄しました"
  # ↑ 一目瞭然
  assert_redirected_to records_path

# 異常系
  delete record_path(2)
  assert flash.to_hash.value? "不正なアクセスです"
  # ↑ 一目瞭然
end

ただしAjaxを利用しており、js.erb内で flash.clearが実行される場合、flashが消えてしまい、この方法では評価できないのでご注意を。

以上。初学者なので、突っ込みあればコメントくださいませ。

0
0
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
0
0