Mocha intenta encontrar archivos de prueba en test
forma predeterminada, ¿cómo puedo especificar otro directorio, por ejemplo server-test
?
unit-testing
node.js
mocha
Viento libre
fuente
fuente
.only
y.skip
administrar qué pruebas estan corriendo. Importante durante el desarrollo de una función específica cuando no desea esperar a que todo el conjunto de pruebas se ejecute todo el tiempo.Respuestas:
Editar: esta opción está en desuso: https://mochajs.org/#mochaopts
Si desea hacerlo simplemente ejecutando
mocha
en la línea de comandos, pero desea ejecutar las pruebas en una carpeta en./server-tests
lugar de hacerlo./test
, cree un archivo./test/mocha.opts
con solo esto en el archivo:Si desea ejecutar todo en esa carpeta y subdirectorios, ponga esto en
test/mocha.opts
mocha.opts
son los argumentos pasados a través de la línea de comando, por lo que hacer que la primera línea sea solo el directorio en el que desea cambiar las pruebas también redirigirá desde./test/
fuente
mocha.opts
archivo se puede colocar donde desee, y luego simplemente ejecutarmocha
especificar la ruta a su archivo de configuración a través de, por ejemplo:mocha --opts ./mocha.opts
Utilizar este:
O si tiene subdirectorios, use esto:
Tenga en cuenta el uso de comillas dobles. Si los omite, es posible que no pueda ejecutar pruebas en subdirectorios.
fuente
mocha test/server-test
mocha ./**/*.test.js
(para poder colocar el archivo de prueba con el archivo del módulo). El patrón dejó de funcionar para mí cuando agregué un archivo de prueba en un nivel diferente en la jerarquía de archivos que el resto de las pruebas, y solo encontré ese archivo de bola impar y no la docena de otros que vivían en el mismo nivel en la jerarquía . Envolviendo entre comillas lo arregló.--recursive
como explico más adelanteAquí hay una manera, si tiene subcarpetas en su carpeta de prueba, por ejemplo
Luego, en Linux, puede usar el comando find para enumerar todos los archivos * .js de forma recursiva y pasarlo a mocha:
fuente
--recursive
como explico más adelantemocha
no tiene la opción de establecer la estructura de directorios deseada en la configuración?La buena manera de hacer esto es agregar un script npm de "prueba" en package.json que llame a mocha con los argumentos correctos. De esta manera, su package.json también describe su estructura de prueba. También evita todos estos problemas multiplataforma en las otras respuestas (comillas dobles vs simples, "buscar", etc.)
Para que Mocha ejecute todos los archivos js en el directorio "test":
Luego, para ejecutar solo las pruebas de humo, llame al:
Puede estandarizar la ejecución de todas las pruebas en todos los proyectos de esta manera, de modo que cuando un nuevo desarrollador comience en su proyecto u otro, sepan que "npm test" ejecutará las pruebas. Hay una buena precedencia histórica para esto (Maven, por ejemplo, la mayoría de los proyectos "make" de la vieja escuela también). Seguro ayuda a CI cuando todos los proyectos tienen el mismo comando de prueba.
Del mismo modo, es posible que tenga un subconjunto de pruebas de "humo" más rápidas que desee que ejecute mocha:
Luego, para ejecutar solo las pruebas de humo, llame al:
Otro patrón común es colocar sus pruebas en el mismo directorio que la fuente que prueban, pero llame a los archivos de prueba * .spec.js. Por ejemplo: src / foo / foo.js es probado por src / foo / foo.spec.js.
Para ejecutar todas las pruebas llamadas * .spec.js por convención:
Luego para ejecutar todas las pruebas llame:
¿Ves el patrón aquí? Bueno. :) La consistencia derrota a mura .
fuente
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 totalmente errónea al respecto. Para limitar todo el comando a una parte del sistema de archivos, puede pasar un patrón como último argumento (no es una bandera).
Por ejemplo, este comando configurará su reportero para especificaciones pero solo probará los archivos js inmediatamente dentro del directorio de prueba del servidor:
Este comando hará lo mismo que anteriormente, además solo ejecutará los casos de prueba donde la cadena / definición it () de una prueba comienza con "Fnord:":
fuente
Si está en node.js , algunas configuraciones nuevas a partir de Mocha v6 :
Opción 1: crear
.mocharc.json
en el directorio raíz del proyecto:Opción 2: agregar
mocha
propiedad en el proyectopackage.json
:Más opciones están aquí .
fuente
Ejecute todos los archivos,
test_directory
incluidos los subdirectorios que coincidantest.js
o use el
--recursive
interruptorfuente
Tuve este problema en este momento y lo resolví eliminando la
--recursive
opción (que había configurado) y usando la misma estructura sugerida anteriormente:mochify "test/unit/**/*.js"
Esto ejecutó todas las pruebas en todos los directorios debajo
/test/unit/
de mí mientras ignoraba los otros directorios dentro/test/
fuente
Hoy en día (año 2020) puede manejar esto usando el archivo de configuración mocha :
Paso 1: Cree el archivo .mocharc.js en la ubicación raíz de su aplicación
Paso 2: Agregue el siguiente código en el archivo de configuración de mocha:
Para obtener más opciones en el archivo de configuración, consulte este enlace: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
fuente
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 / unidad de ruta para encontrar mis pruebas, después de pasar mucho tiempo e intentar varias cosas, aterricé,
El uso de la opción "test / unit / *. Js" no funciona en Windows. Por buenas razones, el shell de Windows no expande comodines como Unixen.
Sin embargo, el uso de "prueba / unidad" funciona, sin el patrón de archivo. p.ej. "prueba / unidad de mocha" ejecuta todos los archivos encontrados en la carpeta de prueba / unidad.
Esto solo ejecuta archivos de una carpeta como pruebas, pero puede pasar varios nombres de directorio como parámetros.
Además, para ejecutar un solo archivo de prueba, puede especificar la ruta completa y el nombre de archivo. p.ej. "prueba de mocha / unidad / mytest1.js"
Realmente configuré en package.json para npm "scripts": {"test": "mocha test / unit"},
Entonces esa 'prueba npm' ejecuta las pruebas de mi unidad.
fuente
--recursive
opción como la siguiente:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
trabajos en Windows. Tambiénnode_modules\.bin\mocha "**\*.js"
funciona (mi caso real). Pero estoy buscando una manera de excluir el directorio node_modules . (También uso gulpfile.js, pero en algún momento necesito iniciar la prueba directamente con mocha)Si está utilizando
nodejs
, en supackage.json
bajoscripts
global (-g)
instalaciones:"test": "mocha server-test"
o"test": "mocha server-test/**/*.js"
para subdocumentosproject
instalaciones:"test": "node_modules/mocha/bin/mocha server-test"
o"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
para subdocumentosLuego simplemente ejecuta tus pruebas normalmente como
npm test
fuente
npm run mocha "./test/*.spec.js!(~)"
ignora el argumento pegote, peronode_modules/.bin/mocha "./test/*.spec.js!(~)"
no lo hace.npm run mocha -- yourArgs
Como mencionó @superjos en los comentarios, use
mocha --recursive "some_dir"
fuente
Esto no parece ser un soporte "fácil" para cambiar el directorio de prueba.
Sin embargo, tal vez debería echar un vistazo a este problema , en relación con su pregunta.
fuente
Como sugirió @ jeff-dickey, en la raíz de su proyecto, cree una carpeta llamada
test
. En esa carpeta, cree un archivo llamadomocha.opts
. Ahora, cuando trato de mejorar la respuesta de Jeff, lo que funcionó para mí fue en lugar de especificar el nombre de una sola carpeta de prueba, especifiqué un patrón para encontrar todas las pruebas para ejecutar en mi proyecto agregando esta línea:*/tests/*.js --recursive
enmocha.opts
Si, en cambio, desea especificar las carpetas exactas para buscar pruebas, hice algo como esto:
Espero que esto ayude a cualquiera que necesite más de lo que proporcionan las otras respuestas
fuente