Éditer novembre 2016: le nœud a maintenant un débogueur intégré que vous pouvez démarrer 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()
J'aimerais m'arrêter sur cette ligne du débogueur car l'objet dans theObject.coffee
n'est pas en cours de chargement. J'utilise nœud-inspecteur et cela fonctionne, en quelque sorte.
Le processus que j'ai est:
mocha --compilers coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
theObject.coffee
soit chargé, puis placez un point d'arrêt sur la bonne ligne Il doit y avoir un moyen plus facile. Il semble que je devrais pouvoir avoir un débogueur en cours d'exécution et le faire arrêter juste sur cette ligne de débogueur, mais je ne parviens pas à le trouver.
J'ai WebStorm, qui a un débogueur ( cet article explique le configurant pour exécuter des tests moka, mais cela ne m'a pas aidé), mais lorsque je le lance, il échoue. La commande en cours d'exécution 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, noeud 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? Facile est le mot clé ici.
Edit: depuis que j'ai demandé cela, j'ai arrêté d'utiliser Windows et je travaille sous Ubuntu. Mon processus de débogage de moka (que j'utilise rarement) est le même.
Éditer, des années plus tard : le plus court chemin du nœud 6+ est: mocha --debug-brk --inspect ./test.js
couplé au plugin 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 écoutera maintenant le 5858--debug-brk
debugger
. Parfois, il ne déplace pas la fenêtre du fichier de code au bon endroit, vous devez donc appuyer sur F10 pour le faire passer à la ligne suivante et indiquer où il se trouve dans le fichier. Ligne de commande:
node-inspector & mocha --compilers 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 le drapeau --debug-brk, il est préférable d'utiliser simplement le drapeau --debug avec -w (watch)
Ainsi, lorsque vous ajoutez et supprimez des lignes de débogueur de votre code, mocha rechargera automatiquement les tests et votre inspecteur de nœuds mettra en pause sur la ligne appropriée.
Cela évite de devoir revoir le terminal en relançant constamment les tests, puis en tapant inutilement "continuer" dans le débogueur pour aller au-delà de la première ligne de la source.
Avec les dernières versions de Mocha et node-inspector , cela fonctionne très bien pour moi:
$ node-debug ./node_modules/mocha/bin/_mocha
Il charge l'exécutable Mocha local en tant que processus de débogage, en s'arrêtant sur la première ligne pour vous permettre de configurer vos points d'arrêt.
Surveillez http://s-a.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
La méthode alternative utilisant 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, utiliser le débogueur de nœud intégré à partir de la ligne de commande constitue le chemin le plus rapide vers la célébrité:
$ mocha $args -- debug
Dans Webstorm maintenant, vous pouvez simplement configurer en utilisant une configuration mocha
. Travaillé à peu près hors de la boîte 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 paramètres avec lesquels il s'exécute afin que vous puissiez probablement les copier dans un autre environnement si vous en avez besoin.
En ce qui concerne Webstorm ou PhpStorm, vous pouvez ajouter une configuration de débogage mocha spécifique:
Vous devrez ajouter via le vert, vous pouvez lui donner un nom.
Si le moka 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 cochez Include subdirectories
/
Comme mon projet est en TypeScript, je devais ajouter:
yarn add ts-node
Pour un projet pur js, cela ne devrait pas être nécessaire.
Vous pouvez maintenant exécuter la totalité de la combinaison de test, puis choisir un cas de test dans la liste, puis 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 des tests Mocha, vous pouvez ajoutez simplement une autre assertion vérifiant la valeur à déboguer .
myVar.should.equal(expected);
Je trouve que c'est souvent tout ce dont j'ai besoin. Et je supprime simplement 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 inspecteur de nodejs . C'est assez simple à utiliser. J'ai déjà écrit une explication détaillée sur la façon de l'utiliser dans this post