前書き
私はrails tutorialに取り組んでいる初心者でよくエラーの読み方がわからず簡単なエラーにもたくさんの時間をかけ学習効率を落としています。なので同じように「エラーを早く解決したいと思う同じ初心者」の方向けに記事を書いています。
エラーの事例
Failure: UsersLoginTest#test_login_with_invalid_information [/home/ubuntu/environment/sample_app/test/integration/users_login_test.rb:11]: Expected false to be truthy.
エラーの背景 rails tutorialでツィッターのようなものを作成している際に自らテストを書いてテストを実行したところテストが失敗した時のエラーについてです。下記が私のテストです
test "login with invalid information" do get login_path assert_template 'sessions/new' post login_path, params: { session: { email: "", password: "" } } assert_template 'sessions/new' assert_not flash.empty? get root_path assert flash.empty? ⇦11行目 end
エラーの読み方
まず前提として全てのエラーコードを解る必要はない 「どこがどう間違っているのかを把握すること」 が大事だと初心者ながら思います。 なので具体的にどこのフォルダーの中のファイルの何行目がどう間違っているかを知る。
[/home/ubuntu/environment/sample_app/test/integration/users_login_test.rb:11]:
↑がどこのフォルダーの中のファイルの何行目がおかしいかを教えてくれています。 私の場合integrationフォルダーのusers_login_test.rbの11行目がおかしい。 見てみると
assert flash.empty?
この部分がおかしいと言っている どうおかしいか?
Expected false to be truthy.
テストの中でassert flash.empty?は失敗するはずなのに実際テストをしてみると成功してしまう。
まとめ
私のテストコードの要約 あるページではフラッシュして それ以外のページに飛んだ時フラッシュは消してという意味 フラッシュとは↓アプリのログインとかの際に失敗or成功したときに一瞬画面に出てくる表示のこと 下で言う赤い部分 ()
テストではあるページの際だけフラッシュを出してと言っているが実際は全てのページでフラッシュが出ているのでおかしいよとエラー入っている