(自分用メモ)最終課題3 ECサイト spec テスト内容をresponse.bodyからpageに変更するとエラー
■現状
表題の件、最終課題3にて、system sepcを書いております。
メンター様に以下ご指摘いただき、対応しております。
しかしながら
以下、テスト内容をresponse.bodyからpageに変更し
bundle exec rspec実行で以下のエラーが起きます。
エラー文
NameError:
undefined local variable or method `page' for
pageは定義されていない変数かメソッド。
■実際に試したこと
①過去質問事例を検索しましたが、皆さんキャプチャでpage使っておられますが、当方と同じ症状の方は見受けられませんでした。
②undefined local variable or method `page' for #<RSpecでググりましたが、
解き方の方向性がバラバラで、釈然とせず、よくわからない状態です。
ググって上から出るリンク
③前回当方が同じような症状で投稿したため
capypara.自身が機能してないのでは?と思いGEMとrails_helper部分確認しましたが、特に問題はありませんでした。
■質問
皆さんが詰まってないところで、自分が詰まっているので、何か根本的におかしいような気がしております。
エラー解消の方向性をご教授いただきたければ幸いです
■git(PRレビュー)
回答
ユーザー画像
Shioji(メンター)
2023/1/12 08:46
system.specを書いているということですが 3行目にtype: request としているからではないでしょうか?
また、response.bodyとpageを同じテストファイルに書いておられるようですが指摘通り、
response.bodyを見ている箇所はrequest spec、pageを見ている箇所はsystem specで記載を分けるようにしましょう。
よろしくお願いいたします。
ユーザー画像
長井宏樹
2023/1/12 17:46
Shioji様
ご回答ありがとうございます。
ご指摘いただいた通り、3行目にtype: systemに変更いたしました。(ケアレスミスでした申し訳ありません)
改めてtype: systemに変更した上で以下のエラーが出ました。
1、pageでの記載エラー
bundle exec rspec実行で以下のエラーが起きます。
※キャプチャ1参照
エラーメッセ
「expected #Capybara::Session to include "Brand", but it does not respond to include?`」
訳:は#Capybara::Sessionに "Brand "をインクルードすることを期待しました。が、includeに反応しない?
2、写真のエラー
上記に加え写真エラーが出ております
エラーメッセ
「 Capybara::ElementNotFound:」
■実際に試したこと
・capybaraのgemが入っているか確認し、spec/rails_helper.rbにも”require 'capybara/rspec'”が記載されていることを確認
・各4つのテスト3行目が傘下の記載になっているか確認(system傘下ならファイル3行目はsystem)
その上で以下実施。
1について、
includeをfindなど他のメソッドに変更。
2について、
・withinでスコープを(imageBox)に変更も同じく” Capybara::ElementNotFound: Unable to find css ”の結果
・requests/categories_spec.rbに転記(上記letも)もテスト通らず
■質問
エラーメッセに従って検索しても、核心的な解き方を得ず、何か根本的におかしいような気がしております。
エラー解消の方向性をご教授いただきたければ幸いです
Discussion