ume

rails test のエラーの読み方

前書き

私は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成功したときに一瞬画面に出てくる表示のこと 下で言う赤い部分 (

テストではあるページの際だけフラッシュを出してと言っているが実際は全てのページでフラッシュが出ているのでおかしいよとエラー入っている