2015-03-09 9 views
8

Ho il seguente messaggio, poco prima di un test in mancanza:Mocha 'prima di ogni gancio' messaggio in rosso. Come faccio a sapere che cosa è nello specifico sbagliato?

1) "before each" hook 

Questa è la l'intero messaggio. È in rosso, il che mi fa pensare che ci sia qualcosa di sbagliato prima di ogni hook, ma non sono sicuro di quale sia l'errore. Potrebbe essere:

  • un timeout
  • fallita Un'asserzione
  • Un errore che è gettato

Come faccio a sapere che cosa l'errore è fallito?

Questo particolare beforeEach() normalmente funziona perfettamente.

+0

Potresti pubblicare il tuo codice beforeEach? – victorkohl

+0

@victorkohl Il mio codice beforeEach richiede la comprensione di un'API esterna (questi sono test di integrazione) e distoglierebbe la conversazione dalla domanda: che cosa significa questo messaggio? – mikemaccana

+0

Se l'hook è asincrono, si chiama callback? – zaynetro

risposta

3

Mi sono imbattuto in questo problema quando prima ho chiamato accidentalmente done() due volte (l'ho chiamato una volta alla fine di beforeEach, ma l'ho richiamato anche tramite una funzione asincrona chiamata prima di EveryOach).

Quando ho eseguito i test in modalità orologio, ho ricevuto il messaggio di errore che hai descritto senza ulteriori informazioni; quando ho eseguito i test normalmente non ho riscontrato errori. Ho segnalato questo su a related ticket.

2

Come faccio a sapere qual è l'errore?

Eseguire il debug come se fosse un normale codice. Se si stanno facendo affermazioni all'interno di una callback beforeEach, si sta violando il framework. Le asserzioni appartengono ai callback it, quindi refactoring.

Probabilmente non si dimentica semplicemente di chiamare done perché la moka ha un chiaro messaggio di errore quando ciò accade.

Quindi il tuo codice probabilmente sta generando un'eccezione non rilevata e puoi usare il tuo gusto preferito di debug per rintracciarlo. Mi piace eseguire la moka con --debug-brk e debugging with node-inspector, ma anche alcune istruzioni console.log dovrebbero essere sufficienti. Nota passando solo il file di test relativo a mocha e usando le tecniche describe.only o it.only puoi mantenere la suite di test piccola e concentrata mentre rintracci la causa principale.

+1

La soluzione proposta è ciò che ho fatto: spostare beforeAach() in test, eseguire il debugging, correggerlo e rimetterlo nel mio codice, ma questo sarebbe meglio come commento poiché non è in realtà una risposta. Inoltre: node-inspector è rotto su current (0.12 - vedi https://github.com/node-inspector/node-inspector/issues/535) e precedenti (0.10 ha bug in v8) versioni di node al momento della scrittura . – mikemaccana

Problemi correlati