rails matchers bot ruby-on-rails rspec rspec-rails

ruby-on-rails - matchers - ruby on rails selenium



RSpec: ¿Cuál es la diferencia entre una característica y una especificación de solicitud? (1)

¿Cuál es la diferencia conceptual entre las características de Rspec y las especificaciones de solicitud ?

Desde los documentos de especificaciones de características:

Las características especiales son pruebas de alto nivel destinadas a ejercer porciones de funcionalidad a través de una aplicación. Deben conducir la aplicación solo a través de su interfaz externa, generalmente páginas web.

Y para las especificaciones de solicitud:

Las especificaciones de solicitud proporcionan una capa delgada alrededor de las pruebas de integración de Rails, y están diseñadas para controlar el comportamiento a través de la pila completa, incluido el enrutamiento (provisto por Rails) y sin tropezar (eso depende de usted). Con las especificaciones de solicitud, puede:

  • especificar una sola solicitud
  • especificar múltiples solicitudes a través de múltiples controladores
  • especificar múltiples solicitudes en múltiples sesiones

Sé que las especificaciones de características usan Capybara y las especificaciones de solicitud no. Pero eso apenas merece diferentes conceptos.


La diferencia conceptual es que, por lo general, se prueba una historia de usuario y toda la interacción debe realizarse a través de la interfaz de usuario. Ahí es donde entra Carpincho. Una especificación de solicitud todavía está probando el comportamiento de su aplicación y no tiene la expectativa de legibilidad que tendría una prueba de aceptación. Entonces, la característica está ahí para la sintaxis mejorada para las pruebas de aceptación.

Las diferencias técnicas incluyen especificaciones de solicitud que envuelven las pruebas de integración de Rails, mientras que las especificaciones de características no lo hacen. Esto significa que con las especificaciones de solicitud puede usar métodos get, post, put, delete y assert contra respuesta. Con las especificaciones de características, debe impulsar toda la interacción a través del navegador y usar métodos como visitar y afirmar contra la página.

Recomiendo leer el feature_spec.feature en el código fuente de rspec-rails en github. Espero que esto ayude.