Probando javascript con Mocha: ¿cómo puedo usar console.log para depurar una prueba?

104

Estoy usando el programa de ejecución de pruebas de JavaScript "Mocha".

Tengo una prueba que está fallando, por lo que debería depurarla usando console.log.

Pero cuando se ejecutan las pruebas, no hay salida (solo los resultados de la prueba de Mocha). ¡Parece que Mocha ha capturado y suprimido mi console.logsalida!

¿Cómo puedo hacer que Mocha muestre mi salida? (en para las pruebas que fallan)?

EDITAR:

¡Grandes disculpas! - ¡ console.logFunciona durante las pruebas! Debo haber estado esperando que suprimiera la salida y no verifiqué correctamente mi propio código. Gracias por responder. Entonces ... dicho eso ... ¿tal vez sería bueno suprimir la salida para las pruebas que pasan? mmm ...

En una nota relacionada: quiero usar console.logporque tengo muchos problemas al intentar que el depurador de Eclipse se conecte a node.js.

¿Soy el único que encuentra esto complicado? ¿Cómo depuran node.js? ¿Con un depurador o con console.logdeclaraciones?

Nick Perkins
fuente
¡Buen negocio! :) En este momento todavía estoy muy "depurando" el nodo a través de pruebas de moca. Veo un momento en el futuro cercano en el que podría querer evaluar algunas de las opciones aquí: stackoverflow.com/questions/1911015/…
Zach Bonham
Sugeriría que no use Eclipse para Node.js, realmente no es el mejor entorno para usar IMO. WebStorm de JetBrains es un excelente IDE para Node.js, aunque cuesta dinero. Si está buscando gratis, realmente me ha gustado el nuevo Visual Studio Code, que tiene un gran soporte integrado para la depuración de Node y otras cosas que hacen que el desarrollo de Node sea agradable.
dsw88
@ dsw88 - Mi experiencia con WebStorm es que se ralentizó una vez que nuestra estructura de archivos comenzó a hacerse grande y profunda. Me recordó a los viejos tiempos con las aplicaciones Java.
kirk.burleson
2
Además de lo que escribió @ dsw88: Use VS Code: Inserte un "depurador"; declaración en algún lugar de su código. Comience su prueba con la opción --inspect-brk y use la acción de depuración de VS Code "NodeJs adjuntar". El depurador comienza en la primera línea del script mocha y tendrás que presionar Reanudar una vez. La próxima vez que su "depurador"; se alcanza la declaración, está listo para comenzar.
FabianTe

Respuestas:

49

¿Qué opciones de Mocha estás usando?

¿Quizás tenga algo que ver con el uso de reporter (-R) o ui (-ui)?

console.log(msg);

funciona bien durante mis ejecuciones de prueba, aunque a veces mezclado en un poco tonto. Presumiblemente debido a la naturaleza asincrónica de la ejecución de prueba.

Aquí están las opciones (mocha.opts) que estoy usando:

--require should
-R spec
--ui bdd

Hmm ... acabo de probar sin mocha.opts y console.logtodavía funciona.

Zach Bonham
fuente
4
¿Dónde log () realmente mucho TO?
PositiveGuy
32

Si está probando código asincrónico, debe asegurarse de colocar done()la devolución de llamada de ese código asincrónico. Tuve ese problema al probar solicitudes http a una API REST.

Kevin C.
fuente
20

Es posible que también haya puesto su console.logdespués de una expectativa que falla y no se detecta, por lo que su línea de registro nunca se ejecuta.

qix
fuente
2
Sí, ese fue mi problema, gracias por sugerir esto. Moví los registros de la consola a ANTES del .expect fallido, y se muestran ahora.
redfox05
-1

Utilice la depuración lib.

import debug from 'debug'
const log = debug('server');

Úselo:

log('holi')

entonces corre:

DEBUG=server npm test

¡Y eso es!

Sebastián Lara
fuente