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
> [email protected]
> http://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users