How to test routes?

How to use rspec to test named routes?

  • Given I have a named route: map.some_route '/some_routes/:id', :controller => 'some', :action => 'other' How do I use the routing spec file 'spec/routing/some_routing_spec.rb' to test for that named route? I've tried this after the "describe SomeRouteController" block and it doesn't work, I get 'undefined method "helper": describe SomeRouteHelper, 'some routes named routes' do it 'should recognize some_route' do helper.some_route_path(23).should == '/some_routes/23' end end

  • Answer:

    If this is in a controller spec, you can call the routing method directly, no helper needed. describe SomeController do it 'should recognize ma routes!' do thing_path(23).should == '/things/23' end end

btelles at Stack Overflow Visit the source

Was this solution helpful to you?

Other answers

In RSpec-Rails 2.7+ you can create a spec/routing directory and put your routing specs in there. See the https://www.relishapp.com/rspec/rspec-rails/docs/routing-specs for more info.

The Doctor What

You can do this in your controller specs with the assert_routing method, like so: describe UsersController do it "should recognize a specific users#show route" do assert_routing("/users/23", {:controller => "users", :action => "show", :id => 23}) end end More documentation is http://www.railsbrain.com/api/rails-2.3.2/doc/index.html?a=M000350&name=assert%5Frouting.

bantic

there's a nice shoulda matcher for this too: it { should route(:get, "/users/23").to(:action => "show", :id => 23) more information on using shoulda matchers with rspec: https://github.com/thoughtbot/shoulda-matchers

Jared

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.