2013-04-09 14 views
50

Sto cercando di capire il modo migliore per eseguire il debug dei miei test di unità quando li interrompo. Tipicamente in ambienti di test precedenti potevo semplicemente eseguire i test nel browser e interrompere il test, o il codice e vedere perché il mio test stava fallendo. Non riesco a capire come farlo con Testacular. C'è un modo semplice per eseguire il debug dei test unitari?eseguire il debug nel browser utilizzando testacular (ora karma)

+6

Hah! Non sono sorpreso che abbiano cambiato il nome. – Joe

+1

Penso che il nome "karma" sia troppo generico e applicato a troppe idee diverse ... dovrebbero tornare a testacular imo :) – Lucas

+0

Una conversazione incredibilmente lunga qui https://github.com/karma-runner/karma/issues/376 Conclusione: la diversità della vita, delle opinioni e dei comportamenti umani si riflette nella comunità dei programmatori. – Joe

risposta

47

Includi "browser = ['Chrome'];" nel tuo file karma.config.

All'apertura di Chrome, dovresti vedere "Karma-connected" in alto, con un pulsante "Debug" in alto a destra.

Fare clic su questo pulsante di debug e verrà visualizzata la scheda "Karma DEBUG RUNNER". Quindi, fai semplicemente clic con il pulsante destro del mouse, controlla l'elemento e esegui il debug come faresti normalmente.

+0

Non penso che questo aggiunga nulla a questo thread .. – Lucas

+14

@ Lucas perché no? Questo è il modo in cui Karma intendeva eseguire il debug dei test nel browser. La risposta accettata funziona, ma questa è un'alternativa più diretta e flessibile che viene inserita nel runner. Mi manca il punto della domanda? –

+6

Questa sembra essere la soluzione migliore per me. Se si eseguono i test utilizzando questo collegamento, verranno visualizzati errori nella finestra della console dello strumento di debug e sarà possibile ricaricare come necessario per eseguirli di nuovo. – Allen

0

Nella console è necessario notificare quale istruzione it() si sta interrompendo e perché. Per esempio:

Todos Add a new todo should add a new todo FAILED 
expected todo.length to be 1 but was 0 

Tuttavia, potrebbe essere utile per impostare

logLevel = LOG_DEBUG; 

nel file karma.conf.js.

+1

questo non mi dà ancora quello che sto cercando. Ad esempio un errore del tipo: 'TypeError: impossibile leggere la proprietà' charAt 'di undefined' è un po 'ambiguo per sapere cosa deve essere corretto. Sto cercando un modo per eseguire il karma in chrome, con i punti di interruzione cromatici in modo da poter vedere il contesto su cosa sta succedendo. – Lucas

66
  1. In karma.conf.js:

    browsers = ['Chrome']; 
    
  2. nelle specifiche difetto:

    it('spec', function() { 
        debugger; // This is like setting a breakpoint 
        // ... 
    }); 
    
  3. Run Karma.
  4. Vai al browser Chrome appena aperto, apri la console e aggiorna la pagina.

Ora nella scheda sorgente Strumenti di sviluppo di Chrome dovresti vedere l'esecuzione interrotta nel debugger.

+0

Sì! Questo è quello che stavo cercando ... Un modo di breakpoint in modo da poter vedere il contesto. – Lucas

+7

realizzato anche che si può solo impostare il karma di singleRun: true e poi basta andare al browser che si apre e punto di interruzione non nelle prove, o il codice: D – Lucas

+1

Funziona con 'browser = [ 'Firefox'] anche questo –

9

ho trovato il seguente modo per eseguire il debug che non richiede di apportare modifiche nel codice (come l'aggiunta di dichiarazione "debugger")

Impostare il "singleRun" come falso nel file di configurazione del karma, in modo tale che KARMA stai ascoltando sulla porta di debug e puoi eseguire nuovamente il test nel browser lanciando l'URL indicato di seguito e esegui il debug:

Go to the captured browser and click the "DEBUG" button (or open http://localhost:9876/debug.html) and use the web inspector to see what's going on. (You may need to refresh the debug.html page for it to kick in once the web inspector is open.)

Problemi correlati