2012-08-29 17 views
5

Estoy usando mocha para probar mi aplicación node.js.¿Cómo organizar mis archivos de especificaciones?

Observé que mis archivos de especificaciones crecían y aumentaban con el tiempo. ¿Hay algún patrón para organizar los archivos de prueba (por ejemplo, un archivo de especificaciones por prueba)? ¿O hay otros marcos encima de mocha para ayudarme a estructurar las pruebas? ¿O prefieres otros marcos de prueba por esa razón?

Respuesta

1

Los archivos grandes de prueba/especificación tienden a significar que el código bajo prueba podría estar haciendo demasiado. Sin embargo, este no siempre es el caso, a menudo su código de prueba siempre pesará sobre el código bajo prueba, pero si encuentra que es difícil de manejar, esto podría ser una señal.

Tiendo a las pruebas de grupo basadas en la funcionalidad. Imagínese si tenemos example.js, esperaría example.tests.js para comenzar.

En lugar de una especificación llamada ExampleSpec, tiendo a tener muchas especificaciones/pruebas basadas en diferentes contextos. Por ejemplo, podría tener EmptyExample, ErrorExample y DefaultExample que tienen diferentes precondiciones. Si se vuelven demasiado grandes, o tienes abstracciones faltantes, o debes pensar en dividir los archivos. Por lo que podría terminar con una estructura de directorios, tales como:

 
    specs/ 
     Example/ 
      EmptyExample.js 
      ErrorExample.js 
      DefaultExample.js 

Para empezar, sin embargo, una prueba archivo/spec por archivo de producción debe ser el punto de partida. Solo separe si es necesario.

+0

¿cómo puedo ejecutarlo? Me gustaría 'mocha testAll.js'. testAll.js incluirá todas las subpruebas. ¿Cómo logro esto? –

+0

Tengo la misma pregunta sobre cómo incluir subpruebas. Hasta ahora, parece que necesita requerir mocha y usarlo programáticamente para incluir otras pruebas sin romper las cosas. O eso o use --recursive en la línea de comando para recoger todos los archivos. –

+0

@ NicolasS.Xu realmente tardó en responder, pero todas sus especificaciones podrían (¿deberían?) Ser módulos comunes que usted requiere en un nivel de subcarpeta 'index.js' que en realidad invoca sus especificaciones. Funciona muy bien en conjunto con los scripts npm. –

Cuestiones relacionadas