ume

Rspec expected to find link "〇〇" but there were no matchesの原因と解決策

考えられる原因

  • htmlページにリンクがないのでエラーが出ている

  • テストコードの書き方が間違っていることによってエラーが出力されている

  • そもそもテストデータベースにデータが入っていない

1つずつ確認してみる.

htmlページにリンクがないのでエラーが出ている>

⇨リンクはhtmlにある(エラーの原因ではない)

テストコードの書き方が間違っていることによってエラーが出力されている

  describe "#search" do 
      #選択肢を選び検索ボタンをリンクが存在するかどうか
      it "should select options" do 
      visit search_path
      select 'クリーム', from: '色'
      select 'ミヌエット', from: '名前'
      click_button '検索'
      expect(page).to have_link 'ミヌエット', href: "/show/1"
    end 
  end 

タイプミス、構文ミス、ありませんでした(エラーの原因ではない)

そもそもテストデータベースにデータが入っていない

spec/rails_helper.rb

# spec/rails_helper.rb
RSpec.configure do |config|

#3行を追加する。
  config.before(:suite) do
    Rails.application.load_seed 
  end


end

この3行の意味はseed.rbファイルのデータをテスト環境のDBに挿入すると意味です。 ⇨この行の追加によりエラーが解決されました。