Problem
You would like to add a routing rspec test in your rails application that tests for a nested route.
So while you have something like the following in your config/routes.rb file:
namespace :admin do
resources :users do
resources :audits, only: [:index]
end
end
you want to add the following test for your route:
expect(get: '/admin/users/:user_id/audits').to route_to(controller: 'admin/audits', action: 'index')
but you are getting an error like the following:
The recognized options <{"controller"=>"admin/audits", "action"=>"index", "user_id"=>":user_id"}> did not match <{"controller"=>"admin/audits", "action"=>"index"}>, difference:.
--- expected
+++ actual
@@ -1 +1 @@
-{"controller"=>"admin/audits", "action"=>"index"}
+{"controller"=>"admin/audits", "action"=>"index", "user_id"=>":user_id"}
Solution
You will need to change your rspec to the following using any number for the user_id:
expect(get: '/admin/users/42/audits').to route_to(controller: 'admin/audits', action: 'index', user_id: '42')
Solution adapted from here