前提・実現したいこと
※Ruby on Railsの初心者です。
RailsでオリジナルSNSアプリを作っています。
Railsのテスト実装中に以下のエラーメッセージが発生しました。
spec/system/static_pages_spec.rb
恥ずかしながら自力で解決できず、かれこれ数時間経過したので質問させていただくことにしました。
よろしくお願いいたします。
環境
ruby 2.5.7
Rails 6.0.3.4
発生している問題・エラーメッセージ
Failure/Error: visit root_path NoMethodError: undefined method `root_path' for #<RSpec::ExampleGroups::StaticPages::Nested::Nested::Nested:0x00007fc062a5b570> [Screenshot]: /Users/aoi/projects/find-app/tmp/screenshots/failures_r_spec_example_groups_static_pages_nested_nested_nested_アプリのぺージネーションが表示されること_490.png # ./spec/system/static_pages_spec.rb:7:in `block (4 levels) in <top (required)>'
該当のソースコード
ruby
1require 'rails_helper' 2 3RSpec.describe "StaticPages", type: :system do 4 describe "トップページ" do 5 context "ページ全体" do 6 before do 7 visit root_path 8 end 9 10 it "FindAppsの文字列が存在することを確認" do 11 expect(page).to have_content 'FindApps' 12 end 13 14 it "正しいタイトルが表示されることを確認" do 15 expect(page).to have_title full_title 16 end 17 18 context "アプリフィード", js: true do 19 let!(:user) { create(:user) } 20 let!(:app) { create(:app, user: user) } 21 22 before do 23 login_for_system(user) 24 end 25 26 it "アプリのぺージネーションが表示されること" do 27 create_list(:app, 6, user: user) 28 visit root_path 29 expect(page).to have_content "みんなのアプリ (#{user.apps.count})" 30 expect(page).to have_css "div.pagination" 31 App.take(5).each do |d| 32 expect(page).to have_link d.name 33 end 34 end 35 36 it "「新しいアプリを作る」リンクが表示されること" do 37 visit root_path 38 expect(page).to have_link "新しいアプリを作る", href: new_app_path 39 end 40 end 41 end 42 end 43 44 describe 'aboutページ' do 45 context 'ページ全体' do 46 before do 47 visit about_path 48 end 49 50 it 'FindAppとは?の文字列が存在することを確認した' do 51 expect(page).to have_content 'Find Appsとは?' 52 end 53 54 it '正しいタイトルが表示されていることを確認した' do 55 expect(page).to have_title full_title('Find Appsとは?') 56 end 57 end 58 end 59 60 describe 'use_of_termsページ' do 61 context 'ページ全体' do 62 before do 63 visit use_of_terms_path 64 end 65 66 it '利用規約の文字列が存在することを確認した' do 67 expect(page).to have_content '利用規約' 68 end 69 70 it '正しいタイトルが表示されていることを確認した' do 71 expect(page).to have_title full_title('利用規約') 72 end 73 end 74 end 75end
試したこと
1.routeファイルのroot_pathの記述に間違いがあるのではないかと仮説したのですが特に記述間違いなどはありませんでした。
一応載せておきます。
ruby
1Rails.application.routes.draw do 2 root to: 'static_pages#home' 3 get :about, to: 'static_pages#about' 4 get :use_of_terms, to: 'static_pages#terms' 5 get :signup, to: 'users#new' 6 get :login, to: 'sessions#new' 7 post :login, to: 'sessions#create' 8 delete :logout, to: 'sessions#destroy' 9 resources :users 10 resources :apps 11end
2.以下の記事に書かれていた通りに、spec_helper.rbを修正後、実行すると違うエラーがおきました。
https://loumo.jp/archives/9370
ruby
1RSpec.configure do |config| 2 config.include Rails.application.routes.url_helpers 3end
Failure/Error: config.include Rails.application.routes.url_helpers NameError: uninitialized constant Rails # ./spec/spec_helper.rb:17:in `block in <top (required)>' # ./spec/spec_helper.rb:16:in `<top (required)>' No examples found. No examples found.
補足情報(FW/ツールのバージョンなど)
他にも色々と調べてみたのですが、解決策が見当たりません。
必要箇所他にございましたら提供いたしますので、ご教示いただきたく存じます。
お手数をおかけしますが何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー