Saviez-vous que vous allez simplement dans votre configuration de lancement, placez votre curseur après ou entre vos autres configurations et appuyez sur ctrl- spacepour obtenir une configuration mocha actuelle et valide générée automatiquement?
Ce qui fonctionne parfaitement bien pour moi. Y compris l'arrêt aux points d'arrêt. (J'en avais aussi un précédent, maintenant obsolète, qui ne le faisait plus pour diverses raisons liées au réglage.)
À partir de VSCode 1.21.1 (mars 2018), cela donne:
{
"version": "0.2.0",
"configurations": [
{
"name": "Mocha (Test single file)",
"type": "node",
"request": "launch",
"runtimeArgs": [
"${workspaceRoot}/node_modules/.bin/mocha",
"--inspect-brk",
"${relativeFile}",
],
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"port": 9229
}
}
Sur une note latérale: debug-brk
est obsolète (pour toute personne avec Node> = Version 8 au moins).
"args"
bloc:"--require", "${workspaceFolder}/tools/testSetup.js",
Ctrl+Space
configuration des tests Mocha générés automatiquement n'avait pasdebug-brk
. Malgré cela, le débogage avec des points d'arrêt fonctionnait très bien.debug-brk
il n'est plus nécessaire utilisé, pris en charge ou inséré automatiquement. Ma note d'accompagnement n'a fait que clarifier cela, car plusieurs autres réponses le mentionnent.ctrl + space
fonctionner.Si vous ne voulez pas utiliser
--debug-brk
+ Attach ou indiquer un chemin absolu vers votre installation globale de mocha (ce qui sera freiné si vous gardez votre launch.json sous contrôle de version et avez plusieurs développeurs sur différentes machines), installez mocha en tant que dépendance dev et ajoutez ceci à votre launch.json:Prise en charge complète du débogage dans vos tests en appuyant simplement sur F5.
--no-timeouts
s'assure que vos tests n'expirent pas parce que vous vous êtes arrêté à un point d'arrêt, et--colors
s'assure que Mocha produit des couleurs même s'il ne détecte pas que VS Code prend en charge les couleurs.la source
sourceMaps: true
. Merci un milliard!npm_config_myparam
le bloc env. Où sur la CLI, cela pourrait ressembler ànpm --myparam=myvalue test
.Une autre méthode consiste à utiliser l'
--debug-brk
option de ligne de commande de mocha et leAttach
paramètre de lancement par défaut du débogueur Visual Studio Code.Explication plus approfondie suggérée (d'André)
Pour faire ça:
Exécutez mocha à partir de la ligne de commande à l'aide de cette commande:
Maintenant, dans VS Code, cliquez sur l'icône de débogage, puis sélectionnez
Attach
l'option à côté du bouton de démarrage. Ajoutez des points d'arrêt dans VS Code, puis cliquez sur Démarrer.la source
"request": "attach"
au launch.json s'il n'existe pas - sinon il se plaindra que vous devez spécifier un programme ou une autre erreur.VS Code
spécifique. Ne fonctionne pas dans le VS normal 2015--debug-brk
c'est aujourd'hui obsolète , c'est pourquoi je suggère de créer automatiquement une nouvelle configuration de débogage dans vscode , oui, également spécifiquement pour mocha.J'ai fait ce travail sur VSCode sur OS X 10.10. Remplacez simplement votre
./settings/launch.json
fichier par ceci.Il est également disponible sous forme de résumé ici .
Les valeurs clés que vous devez modifier sont
program
, qui doivent être définies sur l'_mocha
exécutable etargs
, qui doivent être un tableau de vos fichiers de test.la source
OpenDebug process has terminated unexpectedly
"runtimeExecutable"
sur"C:/Program Files/nodejs/node.exe"
ou où Node est installé?La façon dont je l'ai fait fonctionner sur VS Code (1.8.2) sur Mac OS X est:
Mocha doit être installé dans le répertoire des modules npm.
la source
Debug > Add Configuration...
menuNode.js
environnementMocha Tests
option dans la liste déroulante qui apparaîtargs
propriétébreakpoint
Debug
icôneMocha Tests
comme configurationStart debugging
boutonla source
J'ai trouvé un moyen de le faire que je classe comme une solution de contournement . J'attends de l'équipe Visual Studio Code qu'elle fournisse une solution plus définitive pour cela, mais en attendant, voici ce que j'ai fait:
./settings/mocha.js
fichier qui exécute mocha en passant des arguments par programme comme une liste de fichiers à exécuter. Vous pouvez voir le fichier complet ici ;J'ai créé une configuration de lancement qui exécutera le en
./settings/mocha.js
tant queprogram
et transmettra les fichiers / modèles de fichier que nous devons tester en tant qu'arguments:Exemple de launch.json complet
C'est donc l'équivalent de faire
mocha test/unit/*.js test/unit/**/*.js
et maintenant nous pouvons utiliser des points d'arrêt dans nos tests moka.la source
'sourceMaps': true, 'outDir': './build'
à ma configuration de lancement.Si vous ajoutez la variable $ {file} à la fin de la liste des arguments, vous pouvez démarrer le débogage directement à partir du fichier que vous avez ouvert:
la source
Désolé d'avoir ajouté une autre réponse, mais aucune des précédentes n'a vraiment fonctionné pour moi à partir de VS Code 1.8.1 et du débogueur de nœud standard inclus. Voici la façon dont je l'ai résolu (avec les conseils des réponses précédentes ici et des documents de débogage officiels de VS Code Node.js ), il y a donc un débogage en un clic / pression sur une touche:
devDependency
inpackages.json
:"devDependencies": { "mocha": "^3.2", ... }
npm install
dans le répertoire de votrepackage.json
pour vous assurer que mocha est maintenant installé dansnode_modules/
.vscode/launch.json
(ou dans VS Code, appuyez sur F1, commencez à taper «lancer» et sélectionnez «Déboguer: Ouvrir launch.json»)launch.json
, puis choisissez le nouveau nom de configuration dans la fenêtre de débogage de VS Code et cliquez sur la flèche verte pour commencer le débogage de votre nœud + tests mocha!Dans la nouvelle configuration de
launch.json:
Cela suppose le modèle
test/**/*.js
fonctionnera là où vous placez vos tests. Modifiez le cas échéant.N'hésitez pas à changer de port tant que vous le changez dans les deux
args
port
propriétés et pour correspondre.La principale différence pour moi était de s'assurer que mocha était présent
node_modules
, d'utiliserprogram
pour pointer vers l'exécutable et d'args
avoir besoindebug-brk=x
pointer vers le port spécifié dansport
. Le reste de ce qui précède rend les choses plus jolies et plus faciles.C'est à vous et à votre équipe si vous mettez
.vscode/launch.json
le référentiel ou non. C'est un fichier uniquement IDE, mais toute votre équipe pourrait l'utiliser comme ça, pas de problème, car tous les chemins et installations sont relatifs et explicites.Astuce: Le
package.json
peut inclure unescripts
balise qui lance également mocha avec quelque chose comme"test": "./node_modules/.bin/mocha"
, mais il n'est pas utilisé par VS Code - à la place, il est utilisé lorsquenpm test
est exécuté sur la ligne de commande. Celui-ci m'a un peu dérouté. Notez-le ici au cas où les autres seraient également confus.EDIT: VS Code 1.9.0 a ajouté une option "Ajouter une configuration" dans la liste déroulante de configuration de débogage, et vous pouvez choisir "Tests Mocha Node.js" qui aident à simplifier la plupart de ce qui précède. Vous devez toujours vous assurer que mocha est dans votre
node_modules
et vous devrez peut-être mettre à jour lecwd
et le dernierruntimeArgs
(qui est le modèle pour trouver vos tests) pour pointer vers les chemins appropriés. Mais une fois que vous avez défini ces deux propriétés, cela devrait fonctionner à peu près à partir de là.la source
dans le launch.json, ajoutez 1 configuration supplémentaire ci-dessous
si vous devez configurer la version du nœud, ajoutez simplement un
runtimeExecutable
champ comme celui-cila source
Pour toute personne utilisant Windows. Si vous avez installé mocha globalement, la configuration du programme sur le chemin suivant a fonctionné pour moi (échangez votre nom d'utilisateur).
la source
Cela fonctionne pour moi sur une machine Windows 7. J'ai installé mocha dans le monde entier, mais cette configuration pointe vers l'installation du projet pour éviter d'avoir besoin d'un chemin de profil utilisateur (qui, d'ailleurs, j'ai essayé d'utiliser la variable% USERPROFILE% sans succès). Je suis maintenant en mesure de définir des points d'arrêt dans mes tests de moka. Yay!
la source
Pour ceux qui utilisent grunt ou gulp, la configuration est assez simple.
Launch.json
Gruntfile.js
la source
Dans la version 1.13.0 de VSCode (macOS), ils l'ont intégré sous configurations ->
Mocha Tests
.la source
Lorsque vous utilisez Babel ou que vous générez des fichiers javascript tout en plaçant des points d'arrêt dans la source, vous devez vous assurer d'activer
sourceMaps
et de définiroutFiles
. Voici un exemple de configuration qui a fonctionné pour moi.Remarque - vous devrez modifier
outFiles
pour inclure tout ce à quoi vous pourriez vouloir ajouter un point d'arrêt. Cela peut être plus fastidieux dans un monorepo et plusieurs projets dépendants.la source
1) Aller à
puis
fichier
2) Ajoutez la configuration suivante dans launch.json -
3) Définissez les points d'arrêt dans le fichier de test, puis appuyez sur
F5
la source
Lors de l'utilisation de TypeScript, la configuration suivante fonctionne pour moi dans Visual Studio Code 0.8.0 (tsc 1.5.3)
tsconfig.json
Les choses importantes à noter ici sont que les cartes source sont générées et que le répertoire de sortie pour le js est défini sur
build
launch.json
S'il vous plaît noter que
sourceMaps
est réglé surtrue
et que l'outDir
est réglébuild
déboguer
index.ts
tout autre fichier dactylographié importémocha --debug-brk ./build/test/appTests.js
la source
Voici un exemple de configuration de lancement (launch.json) de Microsoft, qui fonctionne avec Mocha et permet d'utiliser le débogueur.
Il existe également une description de l'utilisation de l'option --debug-brk.
Enfin, voici une version alternative de la façon de déboguer du code avec des tests Mocha en utilisant le fichier tasks.json de VS Code et Gulp task runner.
la source
Si vous avez une dépendance dans le test, il est également facile de l'attacher.
Par exemple, j'utilise
mongo-unit-helper
également des tests unitaires intégrés à Database.package.json
le script est:mocha --recursive --require ./test/mongo-unit-helper.js --exit"
Mon
launch.json
ressemble à:La solution est de mettre
--require
séparémentargs
danslaunch.json
.la source
La solution la plus simple
Ajoutez le code suivant au launch.json dans le dossier .vscode:
Vous voudrez peut-être cependant ajouter un argument de délai d'expiration:
la source