ume

RSpec expected to find link ○○ but there were no matchエラーについて

対象者

この記事を読んでわかること

expected to find link ○○ but there were no matchこのエラーで解決策がわからない人向けにヒントになると思います。

目次

1.このエラーの意味.

  1. このエラー出力時に疑う箇所.

1.このエラーの意味.

ページ内にミヌエットっていうリンクがあるとrspecで書いてるけど実際はそんなリンクなかったよ言っています。

1. このエラー出力時に疑う箇所.

  1. カピバラがダウンロードされていない、また正しく設定できていない可能性.

  2. システムスペックのテスト内容をコントローラースペックに記載している可能性.
    ⇨要はシステムフォルダのスペックファイルの中でシステムテストしたいのに↓の:systemと記載がある箇所に:controllerなど違う文字を入力している可能性

  1. システムスペックでvisit help_pathみたいな記載が必要だがget: helpのように記載している可能性.
    システムスペック内でテストしたい場合はvisit help_pathみたいな感じでページを移動する必要があり、一方コントローラ内ではget: helpのようにページ内を移動する必要がある。
  2. テスト用のデータベースにデータが入っていない可能性.
    私の場合これが原因でエラーが出力されました。 私の勘違いポイントとしてRSpecでテストする際は「テスト用のDBのデータを使ってテストをする」ということを知りませんでした。 要はテスト用のDBが空っぽの状態でテストを走らせているのでデータベースからデータが取得できない⇨画面に何も表示されない⇨リンクがない⇨エラー なので解決策として「テスト用のデータベースにも開発環境と同じデータを入れる」
rails db:seed RAILS_ENV=test

このコマンドでseed.rbに記載のデータがテスト環境のDBに入るようになります。