J'ai ceci (dans gulpfile.js):
var gulp = require("gulp");
var mocha = require("gulp-mocha");
gulp.task("test", function() {
gulp
.src(["./**/*_test.js", "!./node_modules/**/*.js"]);
});
et il fonctionne.
Je veux reproduire le même comportement, à l'exclusion du dossier "node_modules" , de la commande mocha, en cours d'exécution npm test (dans package.json):
"scripts": {
"test": "mocha **\\*_test.js !./node_modules/**/*.js*",
}
et ça ne marche pas.
J'utilise Windows.
Toute suggestion?
Comme suggéré dans un commentaire de @thebearingedge, à la fin je mets TOUS les fichiers source (avec les fichiers de test relatifs) dans un nouveau répertoire "src" .
De cette manière, je peux définir la racine des tests avec un chemin excluant par défaut le dossier "node_modules".
.
├── src
├── fileA.js
├── fileA_test.js
├── fileB.js
├── fileB_test.js
├── node_modules
├── ...
J'ai dû mettre à jour le chemin dans le package.json, gulpfile.js et dans certains fichiers de commandes que j'utilise comme utilitaires.
Changements dans gulpfile.js :
.src(["./src/**/*_test.js"]);
et dans package.json :
"test": "mocha src\\**\\*_test.js",
Simple changement et ça marche.
J'ai été capable de résoudre ce problème en utilisant des modèles globbing dans l'argument de mocha
. Comme vous, je ne voulais pas placer tous mes tests dans un seul dossier tests
. Je les voulais dans le même répertoire que la classe qu'ils testaient. Ma structure de fichier ressemblait à ceci:
project
|- lib
|- class1.js
|- class1.test.js
|- node_modules
|- lots of stuff...
Exécuter ceci à partir du dossier project
a fonctionné pour moi:
mocha './{,!(node_modules)/**}/*.test.js'
Ce qui correspond à n’importe quel fichier *.test.js
de l’arborescence, tant son chemin n’est pas root à ./node_modules/
.
C'est un outil en ligne pour tester des motifs globaux que j'ai trouvés utiles.
Je ne suis pas un gourou des modèles moka ou style fourmis, mais il n'est peut-être pas possible d'esquiver un chemin spécifique dans la ligne de commande mocha.
Vous pouvez placer tous vos fichiers de test dans un dossier de test et définir votre package.json comme suit:
"scripts": {
"test": "mocha ./test/**/*_test.js"
}
Vous pouvez également fournir plusieurs dossiers de départ:
"scripts": {
"test": "mocha ./test/**/*_test.js ./another_test_folder/**/*_test.js"
}
Pour les utilisateurs de Windows Ce script fonctionnera parfaitement
"test": "mocha \"./{,!(node_modules)/**/}*.test.js\"",
J'espère que cela aidera.
à votre santé!
J'avais un répertoire spec
contenant toutes mes spécifications. Dans ce répertoire, j'avais plusieurs sous-répertoires, dont le répertoire e2e
specs. Dans ce scénario, j'ai utilisé la commande mocha specs $(find specs -name '*.js' -not -path "specs/e2e/*")
pour exécuter tous mes tests en ignorant ceux du répertoire e2e
.
Vous pouvez exclure des fichiers de moka en passant des opts
mocha -h|grep -i exclude
--exclude <file> a file or glob pattern to ignore (default: )
mocha --exclude **/*-.jest.js
De plus, vous pouvez également créer un fichier test/mocha.opts
et l'ajouter à cet emplacement.
# test/mocha.opts
--exclude **/*-test.jest.js
--require ./test/setup.js
Si vous voulez exclure un type de fichier particulier, vous pouvez faire quelque chose comme ceci:
// test/setup.js
require.extensions['.graphql'] = function() {
return null
}
Ceci est utile lors du traitement d'extensions avec un chargeur de module tel que webpack que mocha ne comprend pas.