RSpec+Capybaraでテストしたらエラー_Capybara::ElementNotFound
エラーの内容
Failure/Error: expect(page).to have_content '名前を入力してください' expected to find text "名前を入力してください" in "Nameを入力してください"
1・エラーを正しく直したパターン
エラーの原因は、日本語対応させるためのファイル「ja.yml」のインデントが間違っていたため。
正しくはTaskのnameという属性は「名前」と呼ぶということで
task以下はインデントが必要だったのに、していなかったため日本語化されていなかった。
その結果存在しない「名前を入力してください」のテストをしてしまったためにエラーが出た。
正しいコード↓
task: id: ID name: 名前 description: 説明 created_at: 登録日時 updated_at: 更新日時
誤っていたコード↓
task: id: ID name: 名前 description: 説明 created_at: 登録日時 updated_at: 更新日時
2・原因がわからずコードを変えてとりあえず成功するか確認したパターン
当然こちらはダメだとは思いつつ直接の原因がどうしてもわからず
エラーが出ないようにするパターンも発見したので試してみた。
参考にさせていただいた記事↓
Capybara::ElementNotFound:エラーの解決【結合テスト】 - Qiita
「名前」としていたところを参考の記事の通りに
デベロッパーツールを使用して確認したものに変更したらできた。