Mocha essaie de trouver des fichiers de test sous test
par défaut, comment puis-je spécifier un autre répertoire, par exemple server-test
?
unit-testing
node.js
mocha
Freewind
la source
la source
.only
et.skip
gérer les tests que vous sont en train de courir. Important lors du développement d'une fonctionnalité spécifique lorsque vous ne voulez pas attendre que toute la suite de tests s'exécute en permanence.Réponses:
Modifier: cette option est déconseillée: https://mochajs.org/#mochaopts
Si vous voulez le faire en exécutant toujours simplement
mocha
sur la ligne de commande, mais que vous vouliez exécuter les tests dans un dossier./server-tests
au lieu de./test
, créez un fichier./test/mocha.opts
avec juste ceci dans le fichier:Si vous souhaitez tout exécuter dans ce dossier et sous-répertoires, placez-le dans
test/mocha.opts
mocha.opts
sont les arguments transmis via la ligne de commande, donc faire de la première ligne uniquement le répertoire dont vous souhaitez modifier les tests redirigera./test/
la source
mocha.opts
fichier peut être placé où vous le souhaitez, puis exécutez simplement enmocha
spécifiant le chemin d'accès à son fichier de configuration par exemple:mocha --opts ./mocha.opts
Utilisez ceci:
Ou si vous avez des sous-répertoires, utilisez ceci:
Notez l'utilisation de guillemets doubles. Si vous les omettez, vous ne pourrez peut-être pas exécuter les tests dans les sous-répertoires.
la source
mocha test/server-test
mocha ./**/*.test.js
(donc je peux colocaliser le fichier de test avec le fichier de module). Le modèle a cessé de fonctionner pour moi lorsque j'ai ajouté un fichier de test à un niveau différent dans la hiérarchie des fichiers que les autres tests, et ne trouverait qu'un fichier de boule impair et pas la douzaine d'autres qui vivaient au même niveau dans la hiérarchie . L'emballage entre guillemets l'a corrigé.--recursive
comme je l'explique ciVoici une façon, si vous avez des sous-dossiers dans votre dossier de test, par exemple
Ensuite, sous Linux, vous pouvez utiliser la commande find pour répertorier tous les fichiers * .js de manière récursive et les transmettre à mocha:
la source
--recursive
comme je l'explique cimocha
n'a-t-il aucune option pour définir la structure de répertoires souhaitée dans la configuration?La bonne façon de le faire est d'ajouter un script npm "test" dans package.json qui appelle mocha avec les bons arguments. De cette façon, votre package.json décrit également votre structure de test. Cela évite également tous ces problèmes multiplateformes dans les autres réponses (guillemets doubles ou simples, "trouver", etc.)
Pour que mocha exécute tous les fichiers js du répertoire "test":
Ensuite, pour exécuter uniquement les tests de fumée, appelez:
Vous pouvez normaliser l'exécution de tous les tests dans tous les projets de cette façon, donc lorsqu'un nouveau développeur démarre sur votre projet ou un autre, il sait que "npm test" exécutera les tests. Il y a une bonne préséance historique pour cela (Maven, par exemple, la plupart des projets de "vieille école" aussi). Cela aide certainement CI lorsque tous les projets ont la même commande de test.
De même, vous pouvez avoir un sous-ensemble de tests de fumée plus rapides que vous voudrez peut-être exécuter mocha:
Ensuite, pour exécuter uniquement les tests de fumée, appelez:
Un autre modèle courant consiste à placer vos tests dans le même répertoire que la source qu'ils testent, mais appelez les fichiers de test * .spec.js. Par exemple: src / foo / foo.js est testé par src / foo / foo.spec.js.
Pour exécuter tous les tests nommés * .spec.js par convention:
Ensuite, pour exécuter tous les tests, appelez:
Voir le motif ici? Bien. :) La cohérence bat Mura .
la source
N'utilisez pas l'option -g ou --grep, ce modèle fonctionne sur le nom du test à l'intérieur de celui-ci (), pas sur le système de fichiers. La documentation actuelle est trompeuse et / ou carrément erronée à ce sujet. Pour limiter la commande entière à une partie du système de fichiers, vous pouvez passer un modèle comme dernier argument (ce n'est pas un indicateur).
Par exemple, cette commande définira votre reporter sur spec mais ne testera que les fichiers js immédiatement à l'intérieur du répertoire server-test:
Cette commande fera la même chose que ci-dessus, plus elle exécutera uniquement les cas de test où la chaîne / définition it () d'un test commence par "Fnord:":
la source
Si dans node.js , quelques nouvelles configurations à partir de Mocha v6 :
Option 1: créer
.mocharc.json
dans le répertoire racine du projet:Option 2: ajouter une
mocha
propriété dans le projetpackage.json
:Plus d'options sont ici .
la source
Exécutez tous les fichiers dans les
test_directory
sous-répertoires qui correspondenttest.js
ou utilisez l'
--recursive
interrupteurla source
J'ai eu ce problème tout à l'heure et l'ai résolu en supprimant l'
--recursive
option (que j'avais définie) et en utilisant la même structure suggérée ci-dessus:mochify "test/unit/**/*.js"
Cela a exécuté tous les tests dans tous les répertoires sous
/test/unit/
pour moi tout en ignorant les autres répertoires dans/test/
la source
Maintenant, en quelques jours (année 2020), vous pouvez gérer cela en utilisant le fichier de configuration mocha :
Étape 1: créer un fichier .mocharc.js à l' emplacement racine de votre application
Étape 2: Ajoutez le code ci-dessous dans le fichier de configuration mocha:
Pour plus d'options dans le fichier de configuration, reportez-vous à ce lien: https://github.com/mochajs/mocha/blob/master/example/config/.mocharc.js
la source
Je suis sur Windows 7 en utilisant node.js v0.10.0 et mocha v1.8.2 et npm v1.2.14. J'essayais juste d'obtenir du moka pour utiliser le test de chemin / unité pour trouver mes tests, Après avoir passé trop de temps et essayé plusieurs choses, j'ai atterri,
L'utilisation de l'option "test / unit / *. Js" ne fonctionne pas sous Windows. Pour de bonnes raisons, le shell Windows ne développe pas les caractères génériques comme Unixen.
Cependant, l'utilisation de "test / unit" fonctionne, sans le modèle de fichier. par exemple. "mocha test / unit" exécute tous les fichiers trouvés dans le dossier test / unit.
Cela n'exécute toujours qu'un fichier de dossiers en tant que tests, mais vous pouvez passer plusieurs noms de répertoire en tant que paramètres.
Pour exécuter un seul fichier de test, vous pouvez également spécifier le chemin d'accès complet et le nom du fichier. par exemple. "test mocha / unité / mytest1.js"
En fait, je configure dans package.json pour les "scripts" npm: {"test": "mocha test / unit"},
Donc, ce «test npm» exécute mes tests unitaires.
la source
--recursive
option comme suit:mocha --recursive "some_dir"
node_modules\.bin\mocha "test\unit\*.js"
œuvres sous Windows. Fonctionne égalementnode_modules\.bin\mocha "**\*.js"
(mon cas réel). Mais je cherche un moyen d'exclure le répertoire node_modules . (J'utilise aussi gulpfile.js mais je dois parfois lancer le test directement avec mocha)Si vous utilisez
nodejs
, dans votrepackage.json
sousscripts
global (-g)
installations:"test": "mocha server-test"
ou"test": "mocha server-test/**/*.js"
pour les sous-documentsproject
installations:"test": "node_modules/mocha/bin/mocha server-test"
ou"test": "node_modules/mocha/bin/mocha server-test/**/*.js"
pour les sous-documentsEnsuite, exécutez vos tests normalement comme
npm test
la source
npm run mocha "./test/*.spec.js!(~)"
ignore l'argument glob, maisnode_modules/.bin/mocha "./test/*.spec.js!(~)"
non.npm run mocha -- yourArgs
Comme mentionné par @superjos dans les commentaires, utilisez
mocha --recursive "some_dir"
la source
Cela ne semble pas être un support "facile" pour changer de répertoire de test.
Cependant, vous devriez peut-être jeter un œil à ce problème , par rapport à votre question.
la source
Comme l'a suggéré @ jeff-dickey, à la racine de votre projet, créez un dossier appelé
test
. Dans ce dossier, créez un fichier appelémocha.opts
. Maintenant, lorsque j'essaie d'améliorer la réponse de Jeff, ce qui a fonctionné pour moi, au lieu de spécifier le nom d'un seul dossier de test, j'ai spécifié un modèle pour trouver tous les tests à exécuter dans mon projet en ajoutant cette ligne:*/tests/*.js --recursive
dansmocha.opts
Si vous souhaitez plutôt spécifier les dossiers exacts dans lesquels rechercher les tests, j'ai fait quelque chose comme ceci:
J'espère que cela aide quiconque a besoin de plus que ce que les autres réponses fournissent
la source