J'utilise Mocha pour tester mon contenu 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?
Essayez d’utiliser l’option --grep
de mocha :
-g, --grep <pattern> only run tests matching <pattern>
Vous pouvez utiliser n'importe quelle 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 concerne les noms de tous les invocations describe(name, fn)
et it(name, fn)
.
Envisagez d'utiliser des appels imbriqués describe()
pour l'espacement de noms afin de faciliter la localisation et la sélection d'ensembles particuliers.
En fonction de votre modèle d'utilisation, vous voudrez peut-être simplement utiliser seulement . Nous utilisons le style TDD; ça ressemble à ça:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Seul ce test sera exécuté à partir de tous les fichiers/suites.
Si vous utilisez npm test
(en utilisant des scripts package.json), utilisez un --
supplémentaire pour transmettre le paramètre à mocha.
par 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:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Ou bien utilisez --bail
qui semble être moins difficile
npm test -- --bail
Bonjour, les solutions ci-dessus n'ont pas fonctionné pour moi. L’autre façon de faire un seul test est de
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Cela aide à exécuter un scénario de test à partir d'un seul fichier et avec un nom spécifique.
npm test <filepath>
par exemple :
npm test test/api/controllers/test.js
ici 'test/api/controllers/test.js' est chemin de fichier.
En fait, on peut aussi lancer 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 votre fichier mocha.opts, puis créez , sans pour autant:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Voici mon mocha.single.opts (c'est différent de rater la ligne glob susmentionnée)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Background: Bien que vous puissiez remplacer les différents commutateurs du fichier opts-File (commençant par --
), vous ne pouvez pas remplacer le glob . Ce lien contient également quelques explications.
Astuce: si node_modules/.bin/mocha
vous déroute, utilisez le paquet local mocha. Vous pouvez également écrire juste mocha
, si vous l'avez installé globalement.
Et si vous voulez le confort de package.json
: Still: supprimez le **/*
- ish glob de votre mocha.opts
, insérez-les ici, pour les tests complets, laissez-les de côté pour le test unique:
"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
(Remarquez le --
!)
Il suffit d'utiliser .only avant 'décrire', 'il' ou 'le contexte'. Je cours avec "$ npm run test: unit", et il n’exécute que les unités avec .only.
describe.only('get success', function() {
// ...
});
it.only('should return 1', function() {
// ...
});
Vous pouvez essayer "seulement"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
dans ce premier le seul sera exécuté
Vous ne savez pas pourquoi la méthode grep ne fonctionne pas pour moi lorsque j'utilise npm test. Cela fonctionne bien. Je dois également spécifier le dossier de test également pour une raison quelconque.
npm test - test/sometest.js
En regardant dans https://mochajs.org/#usage Nous voyons que simplement utiliser
test moka/mon fichier
marchera. Vous pouvez omettre le ".js" à la fin.
Consolidez tous vos tests dans un fichier test.js et votre paquet json ajoute des scripts en tant que:
"scripts": {
"api:test": "node_modules/.bin/mocha --timeout 10000 --recursive api_test/"
},
Tapez la commande sur votre répertoire de test:
npm run api:test