[rspec-users] how do I spec my Rails routes?

David Chelimsky dchelimsky at gmail.com
Sun Dec 16 16:29:53 EST 2007


On Dec 16, 2007 3:23 PM, Jonathan Linowes <jonathan at parkerhill.com> wrote:
> personally I've broken with convention and put all my route specs
> into a routes_spec.rb file

1.1 broke with that same convention! But slightly differently. The
rspec_scaffold generator generates a controller spec and a routing
spec for each controller you create.

> in part because they're in one file in rails, and when i edit that
> file I want to make sure other routes didn't break.
> Your question about a catchall is another reason.
>
> I also like to spec named routes, not all the time but especially
> those outside the rails resources conventions. Although not strictly
> a "behavior", I'm more comfortable knowing that the named routes work
> (e.g. logout_path => /logout ) before using them in my code.
> Unfortunately I found (via trial and error) that you need a response
> first. This is what I have working (although its hackish):
>
> class RoutesController < ApplicationController
>    def foo
>    end
> end
>
> describe FoosController, "named routes" do
>    before do
>      get :foo
>    end
>
>    it "should route /logout " do
>      logout_path.should == "/logout"
>      route_for(:controller => "sessions", :action =>
> "destroy").should == "/logout"
>      params_from(:get, "/logout").should == {:controller =>
> "sessions", :action => "destroy"}
>    end
>
> end

What would you like to see in rspec to manage this for you? How about
a feature request in the tracker?

>
>
> --linoj
>
>
>
> On Dec 16, 2007, at 11:43 AM, David Chelimsky wrote:
>
> > On Dec 16, 2007 10:32 AM, Francis Hwang <sera at fhwang.net> wrote:
> >> Once again, here's something I haven't figured out. Apologies if this
> >> is too newb-ish, but, how do I spec my routes using RSpec-Rails?
> >>
> >> In particular, I've got a catch-all route that needs to catch a wide
> >> variety of URLs:
> >>
> >> map.document '*url', :controller => 'documents', :action => 'show'
> >>
> >> Is there a way to have a controller spec test site-wide routing? It
> >> seems to me that the get and post methods are just controller-
> >> specific routing. If I can't do it in a controller spec, where else
> >> should I do it?
> >
> > Check out route_for and params_from at http://rspec.info/rdoc-rails/.
> > There are examples of their use in the controller examples generated
> > by 'script/generate rspec_scaffold ...'. Here are a couple of
> > examples:
> >
> > http://pastie.caboo.se/129301
> >
> > Cheers,
> > David
> >
> >>
> >> Thanks,
> >>
> >> Francis Hwang
> >> http://fhwang.net/
> >>
> >>
> >>
> >> _______________________________________________
> >> rspec-users mailing list
> >> rspec-users at rubyforge.org
> >> http://rubyforge.org/mailman/listinfo/rspec-users
> >>
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list