On Jul 15, 2010, at 6:24 PM, Matt Kolenda wrote:

> Hello
> 
> I'm having some trouble getting rspec to recognize a route.  
> 
> # This works 
> describe "routes" do
>       it "should have a route" do
>         { :get => "/accounts/3/jobs/3/
> applications/1/edit" }.should route_to(:controller => 'applications', :action 
> => 'edit', :id => "1", :account_id => "3", :job_id => "3" )
>       end
>     end
>     
> # This fails
>     describe "#edit" do
>       it "should respond to application/edit" do 
>          get "#{edit_account_job_application_path(@account.id, @job.id, 
> @application.id)}"
>         response.should be_success
>       end
>   end

Controller specs include behavior from ActionController::TestCase, which is 
designed to handle requests using a hash representing the action and params 
rather than a URL (or route). The proper way to do this is:

  get :edit, :id => @application.id, :job_id => @job.id, :account_id => 
@account_id

If you want to, you can use urls in request specs in rspec-rails-2 (integration 
specs in rspec-rails-1). But I wouldn't recommend that unless you feel you'll 
benefit from going through routing and rendering views.

HTH,
David

> 
> Here is the stack trace
> 1)
> ActionController::RoutingError in 'ApplicationsController#edit should respond 
> to application/edit'
> No route matches {:action=>"/accounts/23/jobs/
> 99/applications/299/edit", :controller=>"applications"}
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:419:in
>  `generate'
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:352:in
>  `generate_extras'
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/routing/route_set.rb:348:in
>  `extra_keys'
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/test_process.rb:96:in
>  `assign_parameters'
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/test_process.rb:440:in
>  `process'
> /Library/Ruby/Gems/1.8/gems/actionpack-2.3.4/lib/action_controller/test_process.rb:398:in
>  `get'
> ./spec/controllers/applications_controller_spec.rb:26:
> 
> 
> Note that this route works fine at runtime in the browser.  Also rails is 
> able to resolve the route "edit_account_job_application_path".
> 
> I'm running rspec 1.3.0 and rspec-rails 1.3.2
> 
> Thanks in advance!
> 
> Matt
> 
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to