J'utilise Mocha pour tester mes trucs JavaScript. Mon fichier de test contient 5 tests. Est-il possible d'exécuter un test spécifique (ou un ensemble de tests) plutôt que tous les tests du fichier?
J'utilise Mocha pour tester mes trucs JavaScript. Mon fichier de test contient 5 tests. Est-il possible d'exécuter un test spécifique (ou un ensemble de tests) plutôt que tous les tests du fichier?
Réponses:
Essayez d'utiliser l' --grepoption de mocha :
-g, --grep <pattern> only run tests matching <pattern>
Vous pouvez utiliser toute expression rationnelle JavaScript valide en tant que <pattern>. Par exemple, si nous avons test/mytest.js:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Ensuite:
$ mocha -g 'logs a'
Pour exécuter un seul test. Notez que cela grince à travers les noms de tous describe(name, fn)et les it(name, fn)invocations.
Envisagez d'utiliser des describe()appels imbriqués pour l'espace de noms afin de faciliter la localisation et la sélection d'ensembles particuliers.
mocha some/test.js) ne fonctionnait pas du tout. Merci!
logs a bcdqui contient la logs asous-chaîne? Regexp ^$ne fonctionne pas sur 0.10.2.
En fonction de votre modèle d'utilisation, vous pouvez simplement utiliser uniquement . Nous utilisons le style TDD; cela ressemble à ceci:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Seul ce test s'exécutera à partir de tous les fichiers / suites.
it.only.
it.onlyne fonctionne pas avec givende mocha-testdata . Et il est facile d'oublier de le retirer plus tard.
eslint-plugin-mochaa une règle no-exclusive-testsqui vous rattrapera si vous oubliez de supprimer .only.
Si vous utilisez npm test(à l'aide de scripts package.json), utilisez un-- pour passer le paramètre à mocha
par exemple npm test -- --grep "my second test"
EDIT : On dirait que --greppeut être un peu difficile (probablement en fonction des autres arguments). Vous pouvez:
Modifiez le package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Ou bien utiliser --bailce qui semble moins difficile
npm test -- --bail
--grep peut être un peu difficile - essayez de le mettre juste après mocha dans l'entrée de script npm. Sinon, npm test -- --bailc'est utile pour écoper après le premier test qui a échoué
--grepsauver ma journée! Merci beaucoup. PS. Je suis sous Windows, en cours d'exécutionnpm test -- --grep @tag
En fait, on peut également exécuter un seul test mocha par nom de fichier (pas seulement par "it () - string-grepping") si vous supprimez le motif glob (par exemple ./test/**/*.spec.js) de vos mocha.opts, créez respectivement une copie, sans:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Voici mon mocha.single.opts (c'est seulement différent en manquant la ligne glob susmentionnée)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Contexte: Bien que vous puissiez remplacer les divers commutateurs du fichier opts (en commençant par --), vous ne pouvez pas remplacer le glob . Ce lien contient également quelques explications.
Astuce: si node_modules/.bin/mochavous êtes confus, utilisez le paquet local mocha. Vous pouvez également écrire simplement mocha, si vous l'avez installé à l'échelle mondiale.
Et si vous voulez le confort de package.json: Toujours: retirez le **/*glob -ish de votre mocha.opts, insérez-les ici, pour tous les tests, laissez-les de côté pour le seul test:
"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",
usage:
> npm run test
respectivement
> npm run test-single -- test/ES6.self-test.spec.js
(attention --!)
Warning: Could not find any test files matching pattern: $1
Les solutions ci-dessus ne fonctionnaient pas pour moi. L'autre façon d'exécuter un seul test est
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Cela permet d'exécuter un scénario de test à partir d'un seul fichier et avec un nom spécifique.
-get vous n'aurez pas besoin de spécifier un nom de fichier. Si vous ne pouvez pas écrire une expression suffisamment sélective, cela signifie que vous ne nommez pas correctement vos tests.
npm test <filepath>
par exemple :
npm test test/api/controllers/test.js
ici 'test / api / controllers / test.js' est chemin de fichier.
Vous pouvez essayer "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
en cela, le premier seulement exécutera
--forbid-onlysur le serveur CI / build. .onlya tendance à se faufiler dans la branche principale et à rendre les autres tests muets car ils ne s'exécuteront plus. J'en suis venu à penser au workflow de changer le code pour exécuter différents tests et une anti-fonctionnalité. Le lanceur de test doit déterminer quels tests doivent être exécutés (alias tests balisés) et non le développeur.
it.onlyle repo
En regardant dans https://mochajs.org/#usage, nous voyons que simplement utiliser
test de moka / monfichier
marchera. Vous pouvez omettre le «.js» à la fin.
--grepseulement filtré des@balises.