[rspec-users] Named routes raising nil.rewrite error

Scott Taylor mailing_lists at railsnewbie.com
Wed Nov 7 14:21:19 EST 2007


Hi all.  I'm having a little problem with named routes.  I have the  
following named route:

   map.with_options :controller => 'snippets' do |map|
     map.snippets         
'faq/', :action                                   => 'index'
     map.new_snippet     'faq/ 
new', :action                                => 'new'
     map.snippet_text    'faq/ 
get/:id', :action                            => 'get_snippet_text'
     map.set_snippet     'faq/ 
set/:id', :action                            => 'set_snippet_text'
     map.snippet          
'faq/:id', :action                                => 'show'
     map.snippet_version 'faq/:id/version/:version', :action         
=> 'version'
     map.revert_snippet  'faq/:id/version/:version/revert', :action  
=> 'revert'
   end

When trying to write the following spec (a regression), I get the error:

========================================

describe SnippetsController, "routes" do
   it "should route the snippet_version_url to the version action" do
     snippet_version_url(:id => "1", :version => "41").should == "/foo"
   end
end

========================================

escher: ./script/spec spec/controllers/regressions/ 
2007_11_07_snippets_route_spec.rb
F

1)
NoMethodError in 'SnippetsController routes should route the  
snippet_version_url to the version action'
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.rewrite
(eval):19:in `snippet_version_url'
./spec/controllers/regressions/2007_11_07_snippets_route_spec.rb:277:
./script/spec:4:

Finished in 0.029341 seconds

1 example, 1 failure


========================================

Should I be using route_for here?  I've noticed that the following  
spec fails:

========================================

describe SnippetsController, "routes" do
   it "should not raise an error with the snippet_version_url route" do
     lambda {
       snippet_version_url
     }.should_not raise_error
   end
end

escher: ./script/spec spec/controllers/regressions/ 
2007_11_07_snippets_route_spec.rb
F

1)
'SnippetsController routes should not raise an error with the  
snippet_version_url route' FAILED
expected no Exception, got #<NoMethodError: You have a nil object  
when you didn't expect it!
The error occurred while evaluating nil.rewrite>
./spec/controllers/regressions/2007_11_07_snippets_route_spec.rb:281:
./script/spec:4:

Finished in 0.029503 seconds

1 example, 1 failure

========================================

Thanks for any help,

Scott

PS: Running on Rspec edge, rails 1.2.3



More information about the rspec-users mailing list