2014-09-05 9 views
5

Sto eseguendo i miei test utilizzando Karma su PhantomJS e sto affrontando un problema di ciclo di esecuzione asincrono. Mi stavo chiedendo se ci sia comunque un codice di debug interattivo (passo dopo passo) quando i test sono in esecuzione.Passaggio del codice utilizzando PhantomJS durante l'esecuzione dei test utilizzando Karma

Qualsiasi aiuto è molto apprezzato.

+0

Ci possono essere modi migliori, ma vorrei solo passare attraverso gli strumenti di sviluppo del tuo browser. Imposta un breakpoint in chrome, o usa un'istruzione 'debugger;'. –

+0

Lo farei, ma il problema è che sto affrontando un problema specifico su PhantomJS. I test funzionano bene su chrome e firefox. –

+0

Ciò che Nick significa è che esiste un debugger remoto in puro phantomjs e puoi impostare i breakpoint con 'debugger;'. –

risposta

1

È possibile impostare l'istruzione debugger all'interno di uno dei blocchi di test. E poi punta il tuo browser a qualunque URL tu stia correndo karma e apri i tuoi strumenti di sviluppo. Il debugger dovrebbe sparare ogni volta che raggiunge il blocco di test.

Supponendo gelsomino/moka con aspettarsi:

it('fires a debugger', function() { 
    var bool = true || false; 
    debugger; 

    while(bool) { 
    // uh oh... 
    } 
}); 

Nella mia esperienza, il debugger fuoco su entrambi http://localhost:<your-karma-port> e http://localhost:<your-karma-port>/debug.html, ma si può avere più fortuna utilizzando l'URL di debug.

Se non si è in grado di visualizzare le istruzioni del debugger, potrebbe esserci un problema più grande con la configurazione di test.

2

Se si utilizza il pacchetto karma-phantomjs-launcher NPM nei test karma, è possibile aggiungere il seguente frammento nel file karma.conf.js per l'esecuzione PhantomJS in modalità debugger:

browsers: ['PhantomJS_custom'], 

// you can define custom flags 
customLaunchers: { 
    'PhantomJS_custom': { 
    base: 'PhantomJS', 
    debug: true 
    } 
} 

Dopo questo, scrivere una dichiarazione debugger; in cui si desidera per posizionare il punto di interruzione nel codice.

Ora, quando si avvia il programma di test del karma, si vedrà che PhantomJS sta aspettando che il browser si colleghi alla porta del debugger per avviare l'esecuzione dei test.

29 12 2016 13:14:25.269:INFO [launcher]: Starting browser PhantomJS 
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: ACTION REQUIRED: 
29 12 2016 13:14:25.325:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: Launch browser at 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: http://localhost:9000/webkit/inspector/inspector.html?page=2 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: 
29 12 2016 13:14:25.326:INFO [phantomjs.launcher]: Waiting 15 seconds ... 

Punta il tuo chrome all'indirizzo specificato nei registri. Ora vedrai un'interfaccia di debugger servita da Phantomjs. Il codice viene eseguito nel motore PhantomJS ma è possibile osservare i punti di interruzione, valutare espressioni ed eseguire molte operazioni di debug da qualsiasi browser basato su webkit.

Problemi correlati