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 context
es 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
.
feature
y scenario
son parte de Capybara, y no RSpec, y están destinados a ser utilizados para pruebas de aceptación. feature
es equivalente a describe
/ context
y scenario
equivalente 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
describe
y 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:
describe
yit
u otro emparejamientoit
dentro de uncontext
bloque 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
feature
palabra 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