Yo uso 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 en el archivo?
Yo uso 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 en el archivo?
Respuestas:
Intenta usar la --grep
opción de mocha :
-g, --grep <pattern> only run tests matching <pattern>
Puede usar 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();
});
Luego:
$ mocha -g 'logs a'
Para ejecutar una sola prueba. Tenga en cuenta que esto agrupa los nombres de todos describe(name, fn)
y las it(name, fn)
invocaciones.
Considere el uso de describe()
llamadas anidadas para el espacio de nombres para facilitar la localización y selección de conjuntos particulares.
mocha some/test.js
) no funcionó en absoluto. ¡Gracias!
logs a bcd
que contiene la logs a
subcadena? Regexp ^$
no funciona en 0.10.2.
Dependiendo de su patrón de uso, puede que desee utilizar solamente . Usamos el estilo TDD; se parece a esto:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Solo esta prueba se ejecutará desde todos los archivos / suites.
it.only
.
it.only
no va a funcionar junto con given
de moka-testdata . Y es fácil olvidar eliminarlo más adelante.
eslint-plugin-mocha
tiene una regla no-exclusive-tests
que te atrapará si olvidas eliminarlo .only
.
Si está usando npm test
(usando los scripts package.json) use un extra --
para pasar el parámetro a mocha
p.ej npm test -- --grep "my second test"
EDITAR : Parece que --grep
puede ser un poco quisquilloso (probablemente dependiendo de los otros argumentos). Usted puede:
Modifique el paquete.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
O, alternativamente, use el --bail
que parece ser menos exigente
npm test -- --bail
--grep
puede ser un poco quisquilloso: intenta colocarlo justo después de mocha dentro de la entrada del script npm. Else npm test -- --bail
es útil para rescatar después de la primera prueba fallida
--grep
salvar mi día! Muchas gracias. PD. Estoy en Windows, corriendonpm test -- --grep @tag
En realidad, también se puede ejecutar una única prueba de mocha por nombre de archivo (no solo por "it () - grepping de cadenas") si elimina el patrón glob (p ./test/**/*.spec.js
. Ej. ) 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 (solo es diferente al perder la línea glob mencionada anteriormente)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Antecedentes: si bien puede anular los diversos interruptores del archivo opts (comenzando por --
), no puede anular el glob . Ese enlace también tiene algunas explicaciones.
Sugerencia: si node_modules/.bin/mocha
te confunde, usa el paquete local mocha. También puede escribir solo mocha
, si lo tiene instalado globalmente.
Y si desea las comodidades de package.json
: Aún así: elimine el **/*
globo -ish de su mocha.opts
, insértelos aquí, para la prueba completa, déjelos lejos para la prueba individual:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
uso:
> npm run test
respectivamente
> npm run test-single -- test/ES6.self-test.spec.js
(¡cuidado --
!)
Warning: Could not find any test files matching pattern: $1
Hola, las soluciones anteriores no funcionaron para mí. La otra forma de ejecutar una sola prueba es
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Esto ayuda a ejecutar un caso de prueba desde un solo archivo y con un nombre específico.
-g
y no necesitará especificar un nombre de archivo. Si no puede escribir una expresión que sea lo suficientemente selectiva, eso significa que no está nombrando sus pruebas correctamente.
npm test <filepath>
p.ej :
npm test test/api/controllers/test.js
aquí 'test / api / controllers / test.js' es filepath.
Puedes probar "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
en esto solo se ejecutará el primero
--forbid-only
del servidor CI / build. .only
tiene una tendencia a colarse en la rama principal y silenciar las otras pruebas, ya que simplemente no se ejecutarán más. Llegué a pensar en el flujo de trabajo de cambiar el código para ejecutar diferentes pruebas y una función anti. El corredor de prueba debe determinar qué pruebas deben ejecutarse (también conocidas como pruebas etiquetadas), no el desarrollador.
it.only
Mirando https://mochajs.org/#usage vemos que simplemente use
prueba de moca / myfile
trabajará. Puede omitir '.js' al final.
--grep
solo se filtraba de las@
etiquetas.