proyectos ejemplos ruby-on-rails rspec rails-api

ruby on rails - ejemplos - Especificaciones del controlador vs Especificaciones de solicitud?



django (3)

Estoy trabajando en una API de rieles y ahora estoy planeando escribir algunas pruebas RSpec para los controladores. He estado leyendo y no he podido averiguar cuál es la diferencia real entre las especificaciones del controlador y las especificaciones de solicitud y cuál debería usar probablemente si estoy probando una API.


Citando a Aaron Sumner:

Tanto el equipo de Rails como el de RSpec sugieren reemplazar o eliminar las pruebas de control de su aplicación (también conocida como la capa de prueba funcional), a favor de probar directamente los modelos (unidades), o con pruebas de integración de nivel superior.

Para una nueva API, prefiero usar las especificaciones de solicitud y golpear mis "puntos finales" (también conocidos como Modelos y lógica de negocios) que usar pruebas de controlador.


De hecho, el equipo de Rspec declara oficialmente que las especificaciones del controlador ahora están desalentadas .

http://rspec.info/blog/2016/07/rspec-3-5-has-been-released/

Para las nuevas aplicaciones de Rails: no recomendamos agregar la gema de prueba de controladores de rails a su aplicación. La recomendación oficial del equipo de Rails y el equipo central de RSpec es escribir las especificaciones de solicitud en su lugar. Las especificaciones de solicitud le permiten concentrarse en una sola acción de controlador, pero a diferencia de las pruebas de controlador involucran al enrutador, la pila de middleware y las solicitudes y respuestas de rack. Esto agrega realismo a la prueba que está escribiendo y ayuda a evitar muchos de los problemas que son comunes en las especificaciones del controlador. En Rails 5, las especificaciones de solicitud son significativamente más rápidas que las especificaciones de solicitud o de controlador en rails 4, gracias al trabajo de Eileen Uchitelle1 del Rails Committer Team.


Especificaciones del controlador: una especificación del controlador es una envoltura RSpec para una prueba funcional de Rails. Le permite simular una solicitud http única en cada ejemplo y luego especificar los resultados esperados

Especificaciones de solicitud: las especificaciones de solicitud proporcionan una envoltura delgada en torno a las pruebas de integración de Rails, y están diseñadas para impulsar el comportamiento a través de la pila completa, incluido el enrutamiento (proporcionado por Rails) y sin stubbing (eso depende de usted).

Por lo tanto, si desea probar los controladores de API, le recomendaría que utilice las Controller specs ya que está probando solicitudes individuales.