unit-testing - tests - mocha tutorial español
¿Cómo especificar el directorio de prueba para mocha? (10)
Aquí hay una manera, si tiene subcarpetas en su carpeta de prueba, por ejemplo:
/test
/test/server-test
/test/other-test
Luego, en Linux, puede usar el comando find para enumerar todos los archivos * .js recursivamente y pasarlo a mocha:
mocha $(find test -name ''*.js'')
Mocha intenta encontrar archivos de prueba bajo test
de forma predeterminada, ¿cómo especifico otro directorio, por ejemplo server-test
?
Como se menciona por @superjos en los comentarios, use
mocha --recursive "some_dir"
Ejecute todos los archivos en test_directory
incluidos los subdirectorios que coincidan con test.js
find ./parent_test_directory -name ''*test.js'' | xargs mocha -R spec
o use el conmutador --recursive
mocha --recursive test_directory/
Esto no parece ser un soporte "fácil" para cambiar el directorio de prueba.
Sin embargo, tal vez deberías echarle un vistazo a este problema , relativo a tu pregunta.
Estoy en Windows 7 usando node.js v0.10.0 y mocha v1.8.2 y npm v1.2.14. Solo estaba tratando de obtener mocha para usar la prueba de ruta / unidad para encontrar mis pruebas. Después de pasar mucho tiempo y probar varias cosas, aterricé,
Usar la opción "test / unit / *. Js" no funciona en Windows. Por buenas razones, Windows shell no expande comodines como unixen.
Sin embargo, el uso de "prueba / unidad" funciona, sin el patrón de archivo. p.ej. "mocha test / unit" ejecuta todos los archivos encontrados en la carpeta de prueba / unidad.
Esto solo sigue ejecutando archivos de una carpeta como pruebas, pero puede pasar múltiples nombres de directorio como parámetros.
También para ejecutar un solo archivo de prueba puede especificar la ruta completa y el nombre del archivo. p.ej. "mocha test / unit / mytest1.js"
De hecho, configuré en package.json para npm "scripts": {"test": "mocha test / unit"},
Entonces esa ''prueba npm'' ejecuta mis pruebas unitarias.
No use la opción -g o --grep, ese patrón opera en el nombre de la prueba dentro de él (), no en el sistema de archivos. La documentación actual es engañosa y / o francamente incorrecta al respecto. Para limitar todo el comando a una parte del sistema de archivos, puede pasar un patrón como último argumento (no es un indicador).
Por ejemplo, este comando configurará su reportero a la especificación, pero solo probará los archivos js inmediatamente dentro del directorio de prueba del servidor:
mocha --reporter spec server-test/*.js
Este comando hará lo mismo que arriba, y solo ejecutará los casos de prueba donde la cadena / definición it () de una prueba comienza con "Fnord:":
mocha --reporter spec --grep "Fnord:" server-test/*.js
Si desea hacerlo simplemente ejecutando mocha
en la línea de comandos, pero quería ejecutar las pruebas en una carpeta ./server-tests
lugar de ./test
, cree un archivo en ./test/mocha.opts
con solo esto. en el archivo:
server-tests
Si desea ejecutar todo en esa carpeta y subdirectorios, ponga esto en test/mocha.opts
server-tests
--recursive
mocha.opts
son los argumentos que se pasan a través de la línea de comando, por lo que redirigir a la primera línea solo al directorio en el que desea cambiar las pruebas será ./test/
Si está utilizando nodejs
, en su package.json
en scripts
- Para instalaciones
global (-g)
:"test": "mocha server-test"
o"test": "mocha server-test/**/*.js"
para subdocumentos - Para instalaciones de
project
:"test": "node_modules/mocha/bin/mocha server-test"
o"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
para subdocumentos
Entonces solo ejecuta tus pruebas normalmente como npm test
Tuve este problema recientemente y lo resolví eliminando la opción --recursive
(que había establecido) y usando la misma estructura sugerida anteriormente:
mochify "test/unit/**/*.js"
Esto ejecutó todas las pruebas en todos los directorios en /test/unit/
para mí, ignorando los otros directorios dentro de /test/
Utilizar esta:
mocha server-test
O si tiene subdirectorios, use esto:
mocha "server-test/**/*.js"
Tenga en cuenta el uso de comillas dobles. Si los omite, es posible que no pueda ejecutar pruebas en subdirectorios.