javascript - test - tdd mocha chai
Cómo establecer el orden de ejecución de los casos de prueba de mocha en múltiples archivos (5)
Como mocha ordena los archivos en orden alfabético, generalmente prefijo los nombres de mis archivos de prueba con números, como:
-
0 - util.js
-
1 - something low level.js
-
2 - something more interesting.js
etc.
Además de ser realmente fácil de mantener (no truene un gruñido o cualquiera de esas tonterías, no edite su paquete.json ...), proporciona el beneficio de:
- las personas que leen su código fuente tienen una idea de la estructura de su programa, empezando por las partes menos interesantes y avanzando a la capa empresarial
- cuando falla una prueba, tiene algún indicio de causalidad (si algo falló en
1 - something.js
pero no hay fallas en0 - base.js
entonces es probable que sea la falla de la capa cubierta por1 - something.js
Si estás haciendo pruebas unitarias reales, el orden de los cursos no debería importar, pero rara vez puedo realizar las pruebas unitarias en todo momento.
Tengo dos archivos javascript que contienen casos de prueba de mocha.
//----------abc.js -------------
describe("abc file", function(){
it("test 1" , function(){
assert.equal(20 , 20);
});
});
//---------xyz.js--------------
describe("xyz file", function(){
it("test 1" , function(){
assert.equal(10 , 10);
});
});
Los puse en una carpeta llamada test
y cuando ejecuto el comando mocha
el primer archivo (abc.js) siempre se ejecuta antes de xyz.js. Pensé que esto podría deberse al orden alfabético y renombré los archivos como
abc.js => xyz.js
xyz.js => abc.js
pero aún así, el contenido de xyz.js (anteriormente abc.js) se ejecuta primero. ¿Cómo puedo cambiar el orden de ejecución de estos archivos de prueba?
En el segundo archivo, requiere el primero:
--- two.js ---
require("./one")
Mocha ejecutará las pruebas en el orden en que se ejecutan las llamadas de describe
.
Mocha tiene una --sort
(short -S
) que ordena los archivos de prueba:
$ mocha --help
[...]
-S, --sort sort test files
[...]
Si prefiere un orden particular, puede enumerar los archivos (en orden) como argumentos de línea de comando a mocha
, por ejemplo:
$ mocha test/test-file-1.js test/test-file-2.js
Para evitar escribir mucho cada vez que quiera ejecutarlo, puede convertir esto en un script npm
en su package.json
:
{
// ...
"scripts": {
"test": "mocha test/test-file-1.js test/test-file-2.js"
}
// ...
}
Luego ejecuta tu suite desde la línea de comando:
$ npm test
O si está utilizando Gulp, puede crear una tarea en su gulpfile.js
:
var gulp = require(''gulp'');
var mocha = require("gulp-mocha");
gulp.task("test", function() {
return gulp.src([
"./test/test-file-1.js",
"./test/test-file-2.js"
])
.pipe(mocha());
});
Luego ejecuta la $ gulp test
.
Sigo una solución totalmente separada para esto.
Coloque todas sus pruebas en una carpeta llamada prueba / y cree un archivo tests.js en el directorio raíz en el orden de ejecución
--- tests.js ---
require(''./test/one.js'')
require(''./test/two.js'')
require(''./test/three.js'')
Y en los archivos de pruebas one.js, two.js y así sucesivamente, escriba sus pruebas mocha simples
De esta manera, si desea ejecutarlos en el orden que ha definido, simplemente ejecute mocha tests.js