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?
javascript
mocha
Misha Moroshko
la source
la source
--grep
seulement filtré des@
balises.mocha some/test.js
) ne fonctionnait pas du tout. Merci!logs a bcd
qui contient lalogs a
sous-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:
Seul ce test s'exécutera à partir de tous les fichiers / suites.
la source
it.only
.it.only
ne fonctionne pas avecgiven
de mocha-testdata . Et il est facile d'oublier de le retirer plus tard.eslint-plugin-mocha
a une règleno-exclusive-tests
qui 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 à mochapar exemple
npm test -- --grep "my second test"
EDIT : On dirait que
--grep
peut être un peu difficile (probablement en fonction des autres arguments). Vous pouvez:Modifiez le package.json:
Ou bien utiliser
--bail
ce qui semble moins difficilela source
--grep
peut être un peu difficile - essayez de le mettre juste après mocha dans l'entrée de script npm. Sinon,npm test -- --bail
c'est utile pour écoper après le premier test qui a échoué--grep
sauver ma journée! Merci beaucoup. PS. Je suis sous Windows, en cours d'exécutionnpm test -- --grep @tag
exécuter un seul test - par nom de fichier -
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:Voici mon mocha.single.opts (c'est seulement différent en manquant la ligne glob susmentionnée)
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/mocha
vous êtes confus, utilisez le paquet local mocha. Vous pouvez également écrire simplementmocha
, si vous l'avez installé à l'échelle mondiale.Et si vous voulez le confort de
package.json
: Toujours: retirez le**/*
glob -ish de votremocha.opts
, insérez-les ici, pour tous les tests, laissez-les de côté pour le seul test:usage:
respectivement
(attention
--
!)la source
Warning: Could not find any test files matching pattern: $1
Utilisez simplement .only avant «décrire», «il» ou «contexte». Je lance en utilisant "$ npm run test: unit", et il exécute uniquement les unités avec .only.
la source
Les solutions ci-dessus ne fonctionnaient pas pour moi. L'autre façon d'exécuter un seul test est
Cela permet d'exécuter un scénario de test à partir d'un seul fichier et avec un nom spécifique.
la source
-g
et 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.par exemple :
ici 'test / api / controllers / test.js' est chemin de fichier.
la source
Vous pouvez essayer "it.only"
en cela, le premier seulement exécutera
la source
--forbid-only
sur le serveur CI / build..only
a 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.only
le repoEn regardant dans https://mochajs.org/#usage, nous voyons que simplement utiliser
marchera. Vous pouvez omettre le «.js» à la fin.
la source
Je ne sais pas pourquoi la méthode grep ne fonctionne pas pour moi lors de l'utilisation du test npm. Cela fonctionne cependant. Je dois également spécifier le dossier de test également pour une raison quelconque.
test npm - test / someest.js
la source
Consolidez tous vos tests dans un fichier test.js et votre package json ajoute des scripts comme:
Tapez la commande sur votre répertoire de test:
la source