Modifier Nov 2016: Node a maintenant un débogueur intégré que vous pouvez commencer avec --inspect
. Cette réponse l’explique: https://stackoverflow.com/a/39901169/30946 .
Je construis un test de moka dans coffeescript. Tout en haut du test, j’ai:
require "../assets/js/theObject.coffee" debugger ss = new TheObject()
Je voudrais m’arrêter sur cette ligne de débogueur parce que l’object dans l’ theObject.coffee
n’est pas en cours de chargement. J’utilise l’inspecteur de noeuds et ça marche, sorta.
Le processus que j’ai est:
mocha --comstackrs coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
theObject.coffee
du fichier theObject.coffee
, puis placer un point d’arrêt sur la ligne correcte Il doit y avoir un moyen plus facile. Il semble que je devrais être en mesure d’avoir un débogueur en cours d’exécution et de le faire arrêter sur cette ligne de débogueur, mais je ne suis pas en mesure de le trouver.
J’ai WebStorm, qui a un débogueur ( cet article explique comment le configurer pour exécuter des tests de moka, mais cela ne m’a pas aidé), mais quand je le lance, il échoue. La commande exécutée dans la fenêtre de débogage WebStorm est la suivante:
"C:\Program Files\nodejs\node.exe" --debug-brk=64232 C:\Users\jcollum\AppData\Roaming\npm\_mocha C:\Users\jcollum\AppData\Roaming\npm\_mocha:2 basedir=`dirname "$0"`
Je soupçonne que cela pourrait être un problème spécifique à Windows.
Env: Windows 7, Webstorm, nœud 0.8.16, mocha 1.7.4, git-bash
La question: si vous partez de zéro avec Mocha, quel est le moyen le plus simple de lancer un débogueur qui s’arrêtera facilement sur une ligne de débogage? Easy est le mot clé ici.
Edit: depuis que j’ai demandé ceci, j’ai arrêté d’utiliser Windows et je travaille dans Ubuntu. Mon processus de débogage moka (que j’utilise rarement) est le même.
Edit, ans plus tard : le plus court chemin du Nœud 6+ est: mocha --debug-brk --inspect ./test.js
couplé au plug-in Node Inspector Manager.
Plusieurs semaines plus tard, pas de réponses. Voici le chemin le plus rapide que j’ai trouvé.
node-inspector
node-inspector
– il va maintenant écouter sur 5858 --debug-brk
debugger
. De temps en temps, la fenêtre du fichier de code ne sera pas déplacée au bon endroit. Vous devrez donc appuyer sur F10 pour le faire passer à la ligne suivante et afficher son emplacement dans le fichier. Ligne de commande:
node-inspector & mocha --comstackrs coffee:coffee-script/register ./test/appTests.coffee --ui bdd -d -g "should X then Y" --debug-brk
En plus de la réponse de @ jcollum ci-dessus, j’ai trouvé au lieu d’utiliser l’option –debug-brk, il est préférable d’utiliser simplement l’indicateur –debug avec -w (watch)
De cette façon, lorsque vous ajoutez et supprimez des lignes de débogueur de votre code, mocha rechargera automatiquement les tests et votre inspecteur de nœuds sera suspendu sur la ligne appropriée.
Cela évite de devoir revoir constamment le terminal en train de redémarrer les tests, puis de “continuer” inutilement dans le débogueur pour dépasser la première ligne de la source.
Avec les dernières versions de Mocha et d’ inspecteur de nœuds , cela a fonctionné très bien pour moi:
$ node-debug ./node_modules/mocha/bin/_mocha
Il charge l’exécutable Mocha local en tant que processus débogué, s’arrêtant sur la première ligne pour configurer vos points d’arrêt.
Allez sur http://sa.github.io/iron-node/ . C’est le logiciel le plus efficace pour déboguer tout ce qui concerne Node.js.
$ iron-node ./node_modules/mocha/bin/_mocha
L’autre manière d’utiliser le débogueur de noeud WebStorm.
En bref:
Path to Node App JS File
Instruction détaillée avec des captures d’écran de Glenn Block.
S’il s’agit d’une application Node, l’utilisation du débogueur de nœud intégré à partir de la ligne de commande est le chemin le plus rapide vers la célébrité:
$ mocha $args -- debug
Dans Webstorm, vous pouvez maintenant configurer en utilisant une configuration mocha
. Travaillé à peu près hors des sentiers battus pour moi:
Node interpreter: /usr/local/bin/node Working directory: /Users/me/sites/mysite Mocha Package: /Users/me/sites/mysite/node_modules/mocha
et alors
All in directory Test directory: /Users/me/sites/mysite/test
Il vous montre également les parameters avec lesquels il s’exécute, vous pouvez donc probablement les copier dans un autre environnement si nécessaire.
En ce qui concerne Webstorm ou PhpStorm, vous pouvez append une configuration de débogage mocha spécifique:
Vous devrez append via le vert, vous pourriez lui donner un nom.
Si le mocha déjà installé dans le projet via:
npm install mocha --save
ou
yarn add mocha
il trouvera le module correspondant dans votre projet.
Je devais fournir le chemin correct à mes tests unitaires et atteindre la marque pour les Include subdirectories
– Include subdirectories
/
Comme mon projet est un script typescript, j’ai dû append:
yarn add ts-node
Pour un projet pur, cela ne devrait pas être nécessaire.
Vous pouvez maintenant exécuter l’intégralité de la combinaison de test, puis sélectionner des scénarios de test uniques dans la liste, les exécuter et les déboguer eux-mêmes.
Aucune des réponses existantes ne mentionne le chemin de moindre résistance : lorsque vous devez déboguer les tests Mocha, vous pouvez simplement append une autre assertion qui vérifie la valeur que vous souhaitez déboguer .
myVar.should.equal(expected);
Je trouve que c’est souvent tout ce dont j’ai besoin. Et je viens de supprimer les assertions supplémentaires que j’ai utilisées pour le débogage lorsque j’ai terminé.
Une méthode moderne consiste à utiliser la fonction d’intégration d’inspecteur de nodejs. C’est assez simple à utiliser. J’ai déjà écrit une explication détaillée de la façon de l’utiliser dans ce post