¿Cómo ejecutar una única prueba con Mocha?
Utilizo Mocha para probar mis cosas de JavaScript. Mi archivo de prueba contiene 5 pruebas. ¿Es posible ejecutar una prueba específica (o un conjunto de pruebas) en lugar de todas las pruebas del archivo?
Intente usar la opción de mocha--grep
:
-g, --grep <pattern> only run tests matching <pattern>
Puede utilizar cualquier expresión regular de JavaScript válida como <pattern>
. Por ejemplo, si tenemos test/mytest.js
:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Entonces:
$ mocha -g 'logs a'
Para ejecutar una sola prueba. Tenga en cuenta que esto busca en los nombres de todos describe(name, fn)
y it(name, fn)
las invocaciones.
Considere la posibilidad de utilizar llamadas anidadas describe()
para el espacio de nombres a fin de facilitar la localización y selección de conjuntos particulares.
Dependiendo de su patrón de uso, es posible que desee utilizar solo . Usamos el estilo TDD; se parece a esto:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Sólo esta prueba se ejecutará desde todos los archivos/suites.
Si está utilizando npm test
(usando scripts package.json), use un extra --
para pasar el parámetro a mocha
p.ejnpm test -- --grep "my second test"
EDITAR : Parece que --grep
puede ser un poco complicado (probablemente dependiendo de los otros argumentos). Puede:
Modifique el paquete.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
O, alternativamente, utilice --bail
el que parezca menos complicado.
npm test -- --bail
Simplemente use .only antes de 'describir', 'eso' o 'contexto'. Ejecuto usando "$npm run test:unit" y ejecuta solo unidades con .only.
describe.only('get success', function() {
// ...
});
it.only('should return 1', function() {
// ...
});
ejecutar prueba única –por nombre de archivo–
En realidad, también se puede ejecutar una única prueba de mocha por nombre de archivo (no solo mediante "it()-string-grepping") si elimina el patrón global (por ejemplo, ./test/**/*.spec.js
) de su mocha.opts, respectivamente crea una copia, sin:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Aquí está mi mocha.single.opts (la única diferencia es que falta la línea global antes mencionada)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Antecedentes: si bien puede anular los diversos modificadores del archivo opts (comenzando con --
), no puede anular el glob . Ese enlace también tiene algunas explicaciones.
Consejo: si node_modules/.bin/mocha
te confunde, utiliza el paquete local mocha. También puedes escribir solo mocha
, si lo tienes instalado globalmente.
Y si desea las comodidades de package.json
: Aún así: elimine el **/*
pegote -ish de su mocha.opts
, insértelos aquí, para todas las pruebas, déjelos fuera para las pruebas individuales:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha",
"test-single-watch": "mocha -R list -w",
uso:
> npm run test
respectivamente
> npm run test-single -- test/ES6.self-test.spec.js
Tenga en cuenta que--
encadena cualquier texto que venga después al npm
guión .