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