137 votes

Test javascript avec Mocha - comment utiliser console.log pour déboguer un test ?

J'utilise le testeur javascript "Mocha".

J'ai un test qui échoue, je voudrais donc le déboguer en utilisant console.log .

Mais lorsque les tests sont exécutés, il n'y a pas de sortie (seulement les résultats des tests de Mocha). Il semble que Mocha ait capturé et supprimé mon console.log sortie !

Comment puis-je faire en sorte que Mocha affiche mon résultat ? (pour les tests qui échouent) ?

EDITAR:

Toutes nos excuses ! - console.log fonctionne pendant les tests ! Je devais m'attendre à ce qu'il supprime la sortie, et je n'ai pas correctement vérifié mon propre code. Merci de m'avoir répondu. Donc... ceci étant dit... peut-être que ce serait bien de supprimer la sortie pour les tests qui réussissent ? hmm...

Dans le même ordre d'idées, je souhaite utiliser console.log parce que j'ai beaucoup de mal à faire en sorte que le débogueur Eclipse se connecte à node.js.

Suis-je le seul à trouver cela délicat ? Comment faites-vous pour déboguer node.js ? Avec un débogueur, ou avec console.log déclarations ?

58voto

Zach Bonham Points 4460

Quelles sont les options de Mocha que vous utilisez ?

Peut-être est-ce lié à l'utilisation de reporter (-R) ou de ui (-ui) ?

console.log(msg);

fonctionne bien lors de mes tests, même si elle est parfois mélangée de manière un peu bizarre. Cela est probablement dû à la nature asynchrone de l'exécution du test.

Voici les options (mocha.opts) que j'utilise :

--require should
-R spec
--ui bdd

Hmm je viens de tester sans aucun mocha.opts et console.log fonctionne toujours.

36voto

Kevin C. Points 1072

Si vous testez du code asynchrone, vous devez vous assurer de placer les éléments suivants done() dans le callback de ce code asynchrone. J'ai rencontré ce problème en testant des requêtes http vers une API REST.

25voto

qix Points 776

Vous avez peut-être aussi mis votre console.log après une attente qui échoue et n'est pas capturée, de sorte que votre ligne de journal n'est jamais exécutée.

1voto

Parth Thakkar Points 2239

Je n'ai pas une grande idée de ce qu'est le moka, mais je pense que ce qui se passe, c'est que console ou simplement console.log est redéfini par elle. Voici donc ce que je pense pouvoir faire : Avant de charger le fichier mocha, faire exécuter le code suivant :

var old_console = console;

Désormais, vous pourrez utiliser old_console en tant que Original console. Cependant, comme je l'ai dit, je n'ai pas beaucoup d'idée sur mocha, donc ce n'est peut-être pas la solution.

0voto

boly38 Points 118

J'ai eu un problème avec node.exe des programmes tels que les résultats des tests avec mocha .

Dans mon cas, j'ai résolu le problème en supprimant certains alias "node.exe" par défaut.

J'utilise Git Bash pour Windows (2.29.2) et certains alias par défaut sont définis à partir de /etc/profile.d/aliases.sh ,

  # show me alias related to 'node'
  $ alias|grep node
  alias node='winpty node.exe'`

Pour supprimer l'alias, mettez à jour aliases.sh ou simplement faire

unalias node

Je ne sais pas pourquoi winpty a cet effet secondaire sur console.info mais avec une sortie directe node.exe je n'ai plus de problème de stdout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X