2015-09-26 14 views
5

Sto utilizzando il framework di test mocha per testare Http rest-api. Voglio generare test-report per tutti i casi di test, ma quando mi sono imbattuto mocha --reporter html > report.html
Ottenere errore seguenteEsecuzione del test moka ma Errore: ReferenceError: documento non definito

/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263 
    var div = document.createElement('div'); 
      ^
ReferenceError: document is not defined 
    at fragment (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:263:13) 
    at new HTML (/usr/local/lib/node_modules/mocha/lib/reporters/html.js:53:14) 
    at Mocha.run (/usr/local/lib/node_modules/mocha/lib/mocha.js:459:18) 
    at Object.<anonymous> (/usr/local/lib/node_modules/mocha/bin/_mocha:393:18) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:902:3 

risposta

4

Il reporter di nome html è solo da utilizzare durante l'esecuzione di Mocha in un browser . L'esecuzione di Mocha dalla riga di comando non funzionerà con esso.

C'è un reporter denominato doc, che genera "documentazione html" in base a mocha --reporters. A proposito, quando esegui mocha --reporters non vedrai html elencato come reporter, per il motivo che ho indicato sopra.

0

È necessario utilizzare un browser headless per evitare questo problema. Prova con mocha-phantomjs.

+1

Questo non ha funzionato per me perché sto testando un'app Node.JS e Mocha-PhantomJS prevede test basati su browser. – Calrion

-1

sono stato in grado di risolvere una versione più semplice di questo problema definendo condizionale document:

let document = (typeof document === "undefined") ? {} : document; 

mi aspetto che si potrebbe usare lo stesso approccio, ma avrebbe bisogno di impostare document a qualcosa che si fa beffe createElement.

+0

Questo non è fattibile. L'OP dovrebbe prendere in giro non solo 'createElement' ma' getElementsByTagName', 'getElementById',' dispositivoPixeRatio', 'width',' height', 'getContext',' style', 'className',' addEventListener', 'innerHTML 'e molti altri ancora. È un compito ** enorme **. Il reporter HTML si aspetta un ambiente DOM completo. – Louis

+0

Oh, ho perso l'errore nel codice di mocha, non nel codice in fase di test. Questo è un problema più difficile. Il principio potrebbe ancora funzionare, penso che ci siano librerie che fanno deridere un DOM (quasi) completo, ma non sono sicuro che conti come "lo stesso approccio". – ShadSterling

Problemi correlati