Hi,
When upgrading to rspec/rspec-rails 1.2.6 gem (from 1.1.12), I’m having
a new problem verifying routes that should not exist.
This is to support something like this in routes.rb:
map.resources :orders do |orders|
orders.resources :items, :except => [:index,:show]
end
I used to use lambda {}.should_raise( routing error ), but it stopped
detecting any raised error. Requesting it through the browser produces
ActionController::MethodNotAllowed (Only post requests are allowed). But
that error wasn’t detected.
When I skip the lambda, and just ask it to verify that the route does
exist (which should fail), I get the same result for those :except
actions as for a made-up action name. Seems this must have something to
do with the change in how route_for delegates back to ActionController’s
routing assertion (sez the backtrace :).
NoMethodError in ‘ItemsController route generation should NOT map
#indewfefwex’
You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.first
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/assertions/routing_assertions.rb:134:in
recognized_request_for' /Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/assertions/routing_assertions.rb:49:in
assert_recognizes’
/Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/assertions.rb:54:in
clean_backtrace' /Library/Ruby/Gems/1.8/gems/actionpack-2.2.2/lib/action_controller/assertions/routing_assertions.rb:47:in
assert_recognizes’
./spec/controllers/thoughts_routing_spec.rb:9:
I tried using bypass_rescue in my routing/items_routing_spec.rb file as
mentioned by the upgrade doc, but it wasn’t valid in the “routing” spec
- worked fine when I moved the file back to spec/controllers/, though.
Seems like that’s not the issue, but I’m mentioning for more
completeness.
Any ideas what I should be doing instead, or how I can troubleshoot
further?
Thanks,
Randy