Cómo utilizar polymorphic_path en una prueba funcional en Rails 3

Estoy tratando de utilizar polymorphic_path en una prueba funcional en Rails 3.

Al principio obtendría

 NoMethodError: undefined method `polymorphic_path' for # 

Y luego agregué

 include Rails.application.routes.url_helpers 

El undefined method error detuvo, pero ahora las rutas regulares, como article_path(article) por ejemplo, dejaron de funcionar:

 NameError: undefined local variable or method `default_url_options' for # .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/testing/assertions/routing.rb:175:in `method_missing' .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:102:in `url_options' .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/url_for.rb:131:in `url_for' .rvm/gems/ruby-1.9.2-p290/gems/actionpack-3.0.9/lib/action_dispatch/routing/route_set.rb:195:in `article_path' 

Solía ​​poder utilizar polymorphic_path normalmente en Rails 2 al incluir

 include ActionController::UrlWriter 

¿Cómo puedo conseguir que esto funcione en Rails 3?

Necesito incluir:

 include ActionDispatch::Routing::UrlFor include Rails.application.routes.url_helpers 

y establecer:

 default_url_options[:host] = 'www.example.com' 

Me enteré a través de este post que responde a un problema similar http://steve.dynedge.co.uk/2010/04/29/rails-3-rake-and-url_for/

Encontré este problema al refactorizar algunas pruebas de Rails4 para convertirlas en modelos agnósticos. encontre eso

 something_path(obj) 

trabajado pero

 polymorphic_path(obj) 

no lo hice Ninguna de las sugerencias anteriores funcionó para mí tampoco. Encontré que esto sí, sin embargo:

 @controller.polymorphic_path(obj) 

Esto es en el contexto donde self es un descendiente de ActionController::TestCase .

Otra forma de solucionar esto es definir un método de delegación en la clase de prueba del controlador:

 def polymorphic_path(*args) @controller.polymorphic_path(*args) end 

Has probado:

 Rails.application.routes.url_helpers.polymorphic_path 

? 🙂