RSpecでコントローラーのテストを作成しています。
以下のようなエラーでテストが正しく通過せず困っています。
rails s
で
http://localhost:3000/restaurant
もしくは
http://localhost:3000/ja/restaurant
としたときに正しく表示され、200で返ってくるアプリです。
ruby
1$ bundle exec rspec spec/controllers/restaurant_controller_spec.rb 2RestaurantController 3 GET index 4 responds successfully (FAILED - 1) 5 6Failures: 7 8 1) RestaurantController GET index responds successfully 9 Failure/Error: get '/restaurant' 10 11 ActionController::UrlGenerationError: 12 No route matches {:action=>"/restaurant", :controller=>"restaurant"} 13 # ./spec/controllers/restaurant_controller_spec.rb:6:in `block (3 levels) in <top (required)>' 14 15Finished in 0.00748 seconds (files took 6.18 seconds to load) 161 example, 1 failure 17 18Failed examples: 19 20rspec ./spec/controllers/restaurant_controller_spec.rb:5 # RestaurantController GET index responds successfully
こちらがSpecです。
spec/controller/restaurant_controller_spec.rb
rspec
1require 'rails_helper' 2 3RSpec.describe RestaurantController, type: :controller do 4 describe "GET index" do 5 it "responds successfully" do 6 get '/restaurant' 7 expect(response).to be_success 8 end 9 end 10end
コントローラーの記載はこのとおりです。
app/controller/restaurant_controller.rb
ruby
1def index 2 @q = Restaurant.ransack(params[:q]) 3 if params[:q].present? 4 @all_restaurants = @q.result(distinct: true).page(params[:page]) 5 else 6 @all_restaurants = Restaurant.page(params[:page]) 7 end 8end
ルートファイルは以下のように記述しています。
route
1scope "(:locale)", locale: /en|ja/ do 2 get 'restaurant/' => 'restaurant#index' 3 get 'restaurant/:id' => 'restaurant#show' 4end
何が問題なのでしょうか?ご教示いただけると幸いです。
あなたの回答
tips
プレビュー