describe, context, feature, scenario: ¿Cuál es la diferencia (s) entre los cuatro y cuándo utilizar cada uno?
fuente
describe, context, feature, scenario: ¿Cuál es la diferencia (s) entre los cuatro y cuándo utilizar cada uno?
El contextes un alias para describe, por lo que son funcionalmente equivalentes. Puede usarlos indistintamente, la única diferencia es cómo se lee su archivo de especificaciones. No hay diferencia en la salida de prueba, por ejemplo. El libro RSpec dice:
Solemos usar
describe()para las cosas ycontext()para el contexto ”.
Personalmente me gusta usar describe, pero puedo ver por qué la gente lo prefiere context.
featurey scenarioson parte de Capybara, y no RSpec, y están destinados a ser utilizados para pruebas de aceptación. featurees equivalente a describe/ contexty scenarioequivalente a it/ example.
Si está escribiendo pruebas de aceptación con Capybara, use la sintaxis feature/ scenario, si no, use la sintaxis describe/ it.
Esta mañana, mientras escribía algunas especificaciones, tenía la misma pregunta. Por lo general, lo uso principalmente
describey no pienso particularmente en esto, pero esta mañana estaba lidiando con muchos casos y diferentes especificaciones para un módulo, por lo que tenía que ser fácilmente comprensible para el próximo desarrollador que lea esas especificaciones. Así que le pregunté a Google sobre esto y encontré esto: describir vs.contexto en rspec , cuya respuesta encuentro bastante interesante:Entonces, confiando en este principio, escribirías una especificación como esta:
No estoy seguro si esta es una regla generalmente aceptada, pero encuentro este enfoque claro y bastante fácil de entender.
fuente
Ampliando la excelente respuesta de Pierre , según los documentos :
Entonces, para aquellos familiarizados con los términos Mocha y describirlo (que son más adecuados para describir el comportamiento de una prueba desde la perspectiva de un usuario, por lo tanto, Mocha funciona principalmente como un marco de prueba frontal), podría:
describeyitu otro emparejamientoitdentro de uncontextbloque que requiere que se realicen múltiples afirmaciones / pruebas en un estado específico de la aplicaciónSiguiendo con la segunda opción, aún puede seguir la intención de "... ajustar [hacer ping] un conjunto de pruebas contra una funcionalidad en el mismo estado".
Por lo tanto, sus pruebas podrían verse así:
De esta manera, omite la
featurepalabra clave por completo, que es posible que desee utilizar para funciones específicas de la interfaz o si está haciendo FDD (desarrollo impulsado por funciones), que puede resultar incómodo para algunos. Pregunte aquí a su equipo de desarrolladores.Advertencia: no siempre sigamos los estándares de la industria, imagínese si modelamos todas nuestras pruebas según la filosofía de Volkswagen.
fuente