Quel est le moins de chemin de résistance au débogage des tests de moka?

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:

  1. démarrer le nœud-inspecteur
  2. lancez le test sur la ligne de commande avec du mocha --comstackrs coffee:coffee-script ./test/theObjectTests.coffee --ui bdd -d --debug-brk
  3. aller à la page inspecteur de noeud, actualisez-le s’il est déjà ouvert
  4. attendre le 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é.

  1. écrire des tests de moka
  2. installer le node-inspector
  3. start node-inspector – il va maintenant écouter sur 5858
  4. lance le test de moka avec --debug-brk
  5. à ce stade, le test de moka est mis en pause sur la première ligne
  6. ouvrez un navigateur web et allez sur localhost: 5858
  7. (facultatif: append une ligne de débogueur en haut de votre fichier de test, définir des points d’arrêt après son arrêt dans ce fichier)
  8. appuyez sur F10 pour obtenir le code à suivre
  9. node-inspector s’arrêtera sur toute ligne sur laquelle se trouve un 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

entrer la description de l'image ici

entrer la description de l'image ici

L’autre manière d’utiliser le débogueur de noeud WebStorm.

En bref:

  1. Vous avez besoin de WebStorm
  2. Créer un nouveau profil de débogage de noeud dans WebStorm
  3. Définissez le chemin d’access à votre binary moka dans Path to Node App JS File
  4. Ajouter des points d’arrêt et démarrer la session à partir de WebStorm

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:

Configuration de débogage

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 subdirectoriesInclude 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