ruby-on-rails - matchers - rspec rails tutorial
Llamar a Rails.application.routes.recognize_path dentro de una prueba de rspec no coincide con ninguna ruta en Rails 3 (1)
Finalmente descubrí la causa de este estúpido error autoinducido: se olvidó de definir un CustomersController al que se asignan las rutas.
Después de sumergirse en la fuente de Rails descubrió que el enrutamiento realmente constata el controlador asignado a las rutas, por lo que se requiere un controlador real para mapear en sus especificaciones. :)
Una aplicación de Rails 3 en la que estoy trabajando contiene alguna lógica que invoca el siguiente código (que no puedo cambiar):
Rails.application.routes.recognize_path("/customers", :method => :get)
El "/ customers" es, por supuesto, variable.
Estoy escribiendo una prueba Rspec asociada, que invoca el código que contiene dicha lógica y la prueba tiene un entorno completo de Rails. Cuando planteo lo siguiente:
Rails.application.routes.routes.inspect
contiene las rutas adecuadas (por ejemplo, una de las rutas que tiene es "GET / clientes").
Cuando ejecuto la prueba, la lógica da como resultado a:
No route matches "/customers"
Haciendo lo siguiente:
@routes = Rails.application.routes
assert_recognizes({:controller => "customers", :action => "index"}, "/customers")
da como resultado el mismo error
Dentro de una prueba de ayuda, lo siguiente:
# this succeeds and returns "/customers"
x = helper.customers_path
Rails.application.routes.recognize_path(x, :method => :get)
da como resultado, una vez más, el mismo error (Ninguna ruta coincide con "/ clientes")
Estoy 100% seguro de que Rails.application.routes contiene las rutas adecuadas.
¿Alguien tiene alguna idea de la causa de esto?
¡Gracias!