Adam Stegman wrote:
> In integration tests, you can test the response of the server given a
> url_for_options hash, like so:
> get(:action, :param1 => "one", :param2 => "two", ...)
> assert_response :success
>
> However, this doesn't work with a named route.
> # routes.rb
> map.thing_download "things/:id/download" {:controller
> => :things, :action => :download}
>
> # things_controller_test.rb:
> get(:download, :id => @thing.id) #=> ActionController::RoutingError,
> no route matches {:controller => :things, :action => :download, :id =>
> 12}
> get(thing_download_path(@thing)) #=> ActionController::RoutingError,
> no route matches {:controller => :things, :action => "/things/12/
> download"}
>
> Is there a way to get a response from a named route in functional
> tests?
Are you looking for assert_recognizes ?
More to the point, should you care? Routing is UI-facing stuff, so
(even more than elsewhere) you should be testing behavior, not URL
options.
> For the time being I've resorted to misusing integration tests
> for this purpose, because inheriting from
> ActionController::IntegrationTest gives you a get() function that
> takes a string, so I can do
> get(thing_download_path(@thing))
Don't bother with integration tests. Use Cucumber.
(Also consider RSpec -- it's a lot nicer than Test::Unit.)
Best,
--
Marnen Laibow-Koser
http://www.marnen.org
[email protected]
--
Posted via http://www.ruby-forum.com/.
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.