Testare javascript con Mocha: come posso utilizzare console.log per eseguire il debug di un test?


104

Sto usando il test runner javascript "Mocha".

Ho un test che non riesce, quindi dovrei eseguirne il debug usando console.log.

Ma quando vengono eseguiti i test, non viene visualizzato alcun output (solo i risultati del test da Mocha). Sembra che Mocha abbia catturato e soppresso il mio console.logoutput!

Come posso fare in modo che Mocha mostri il mio output? (a per i test che falliscono)?

MODIFICARE:

Enormi scuse! - console.logfunziona durante i test! Devo essermi aspettato che sopprimesse l'output e non ho controllato correttamente il mio codice. Grazie per aver risposto. Quindi ... detto questo ... forse sarebbe davvero bello sopprimere l'output per i test che passano? hmm ...

In una nota correlata: voglio usare console.logperché ho molti problemi nel tentativo di ottenere il debugger di Eclipse per connettersi a node.js.

Sono l'unico che lo trova complicato? Come fate a eseguire il debug di node.js? Con un debugger o con console.logistruzioni?


Buon affare! :) In questo momento sto ancora eseguendo il debug del nodo tramite test moca. Vedo un momento nel prossimo futuro in cui potrei voler valutare alcune delle opzioni qui: stackoverflow.com/questions/1911015/…
Zach Bonham,

Suggerirei di non utilizzare Eclipse per Node.js, in realtà non è l'ambiente migliore per utilizzare IMO. WebStorm di JetBrains è un ottimo IDE Node.js, anche se costa denaro. Se stai cercando gratuitamente, mi è piaciuto molto il nuovo Visual Studio Code, che ha un ottimo supporto integrato per il debug dei nodi e altre cose che rendono piacevole lo sviluppo di Node.
dsw88

@ dsw88 - La mia esperienza con WebStorm è che è rallentato una volta che la nostra struttura dei file ha iniziato a diventare grande e profonda. Mi ha ricordato i vecchi tempi con le app Java.
kirk.burleson

2
Oltre a ciò che ha scritto @ dsw88: Usa VS Code: Inserisci un "debugger"; dichiarazione da qualche parte nel codice. Inizia il tuo test con l'opzione --inspect-brk e usa l'azione di debug di VS Code "NodeJs attach". Il debugger inizia dalla prima riga nello script mocha e dovrai premere Resume una volta. La prossima volta che il tuo "debugger;" la dichiarazione è stata raggiunta, sei a posto.
FabianTe

Risposte:


49

Quali opzioni Mocha stai usando?

Forse ha qualcosa a che fare con reporter (-R) o ui (-ui) in uso?

console.log(msg);

funziona bene durante i miei test, anche se a volte è un po 'sciocco. Presumibilmente a causa della natura asincrona dell'esecuzione del test.

Ecco le opzioni (mocha.opts) che sto usando:

--require should
-R spec
--ui bdd

Hmm ... appena testato senza mocha.opts e console.logfunziona ancora.


4
dove log () fa effettivamente lotto TO?
PositiveGuy

32

Se stai testando codice asincrono, devi assicurarti di inserire done()il callback di quel codice asincrono. Ho riscontrato questo problema durante il test delle richieste http a un'API REST.


20

Potresti anche aver inserito il tuo console.logdopo un'aspettativa che fallisce e non è rilevata, quindi la tua riga di registro non viene mai eseguita.


2
Sì, questo era il mio problema, grazie per averlo suggerito. Ho spostato i log della console su PRIMA dell'errore .expect e ora vengono visualizzati.
redfox05

-1

Usa la libreria di debug .

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

Usalo:

log('holi')

quindi esegui:

DEBUG=server npm test

E questo è tutto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.