2015-05-06 12 views
5

Ho un file di prova su una macchina remota e voglio attraversarlo con node-inspector. Così, sulla macchina remota (Vagrantfile):Eseguire il debug del test mocha.js remoto con node-inspector?

node-inspector & 
mocha --debug-brk foo.test.js 

Poi, sulla mia macchina dev apro Canary e vado a:

http://127.0.0.1:8080/debug?ws=127.0.0.1:8080&port=5858 

Tuttavia, io non sono in grado di eseguire il debug la mia prova, dal momento che il debugger si romperà in prima linea in node_modules/mocha/bin/_mocha, e il mio file di prova non è visibile nella scheda Sources:

enter image description here

Ho provato impostare un punto di interruzione all'interno _mocha, il line 398:

runner = mocha.run(program.exit ? exit : exitLater); 

Ma quando provo a 'passo in', per vedere la funzione run esecuzione, non intervenire posso vedere output nella. console, quindi esegue comunque. Se si imposta un punto di interruzione directly in the run function, non si romperà lì.

Inoltre, lo test file non viene mai visualizzato nella scheda "Origini", quindi non posso impostare punti di interruzione al suo interno. Ho anche provato ad aggiungere un'istruzione debugger ma non si interrompe.

Come si può fare in modo che ispettore nodi mostri il file di prova e lo passi attraverso?

node v0.12.0 
node-inspector v0.10.0 
mocha v2.2.4 
+0

Quindi, come si accede al dispositivo remoto dalla macchina di sviluppo tramite 'http: // 127.0.0.1'? – JMM

+0

@JMM le porte 5858 e 8080 sul telecomando vengono inoltrate alle 5858 e 8080 locali –

+0

Ah, ok, grazie. Sarebbe possibile per te creare una riproduzione minimale di questo problema che potrei clonare da GitHub o da qualche parte? – JMM

risposta

1

Ci sono in realtà 2 problemi:

  1. punti di interruzione non rispettati
  2. file di test non visibili

Il primo problema è stato risolto nella recente pubblicazione [email protected]. Quindi, i punti di interruzione saranno rispettati ovunque.

C'è ancora il secondo problema. Come ha detto @JMM, l'elenco dei file nella scheda "Sorgenti" è dinamico e i file di test non verranno visualizzati lì quando si interrompe il processo. Quello che ho finito per fare è impostare un punto di interruzione poco prima della funzione di test viene eseguito, in mocha/lib/runnable.js#266, su questa linea:

var result = fn.call(ctx); 

fn è la funzione di test. Una volta entrati in esso, il file di test apparirà nella scheda Sources e il cursore del debugger si troverà sulla prima riga della funzione di test.

1

Mi capita spesso eseguito in questo, e non so se c'è una soluzione migliore (se c'è sarò felice di sentirlo), ma trovo che devo lasciare che l'avanzata debugger un punto in cui diventa consapevole dei file aggiuntivi che voglio eseguire il debug. Senza vedere altro del tuo codice, non posso dare un suggerimento più specifico su dove andare avanti, ma cerca di capire dove verranno caricati i file di test nei file di origine che sono disponibili e che avanzano lì. Aggiungerà gradualmente più file al pannello Sorgenti mentre il codice viene eseguito.

+0

gli darà un colpo domani ; Non sapevo che la lista dei file fosse dinamica. –

+0

hm, devo fare qualcosa di sbagliato perché non vedo mai il file di test nella scheda Sorgenti; domanda aggiornata con maggiori dettagli. –