¿Cómo ejecutar una única prueba con Mocha?

Resuelto Misha Moroshko asked hace 12 años • 15 respuestas

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?

Misha Moroshko avatar May 31 '12 17:05 Misha Moroshko
Aceptado

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.

Ashe avatar May 31 '2012 12:05 Ashe

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.

J Burnett avatar Aug 31 '2012 19:08 J Burnett

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 --greppuede ser un poco complicado (probablemente dependiendo de los otros argumentos). Puede:

Modifique el paquete.json:

"test:mocha": "mocha --grep \"<DealsList />\" .",

O, alternativamente, utilice --bailel que parezca menos complicado.

npm test -- --bail
Ashley Coolman avatar Aug 18 '2016 07:08 Ashley Coolman

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() {
  // ...
});
QauseenMZ avatar May 17 '2019 16:05 QauseenMZ

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/mochate 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 npmguión .

Frank N avatar Oct 16 '2017 09:10 Frank N