tutorial rails matchers factory_girl_rails bot ruby-on-rails ruby-on-rails-3 rspec routes specifications

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!