2015-09-26 8 views
5

Ich benutze Mokka-Test-Framework, um Http Rest-api zu testen. Ich möchte Test-Bericht für alle Testfall erzeugen, aber wenn ich mocha --reporter html > report.html lief
Erste folgenden FehlerLaufender Mokkatest, aber Fehler erhalten: ReferenceError: Dokument ist nicht definiert

/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 

Antwort

4

Der Reporter namens html ist nur verwendet werden, wenn Mokka in einem Browser ausgeführt wird . Das Ausführen von Mocha über die Befehlszeile funktioniert nicht.

Es gibt einen Reporter namens doc, der "HTML-Dokumentation" nach mocha --reporters ausgibt. By the way, wenn Sie mocha --reporters ausführen, werden Sie html nicht als ein Reporter aufgeführt, aus dem Grund, den ich oben angegeben habe.

0

Sie sollten einen kopflosen Browser verwenden, um dieses Problem zu vermeiden. Versuchen Sie es mit mocha-phantomjs.

+1

Dies funktionierte nicht für mich, weil ich eine Node.JS App teste und Mocha-PhantomJS Browser-basierte Tests erwartet. – Calrion

-1

Ich war in der Lage, eine einfachere Version dieses Problem zu lösen, indem document bedingt definieren:

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

Ich erwarte, dass Sie den gleichen Ansatz verwenden könnte, aber müssten document auf etwas setzen, die createElement spottet.

+0

Das ist nicht lebensfähig. Das OP müsste nicht nur "createElement", sondern "getElementsByTagName", "getElementById", "devicePixeRatio", "width", "height", "getContext", "style", "className", "addEventListener", "innerHTML" vortäuschen ', und viele, viele mehr. Das ist eine sehr große Aufgabe. Der HTML-Reporter erwartet eine vollwertige DOM-Umgebung. – Louis

+0

Oh, ich habe übersehen, dass der Fehler im Mocha-Code liegt, nicht im getesteten Code. Das ist ein schwierigeres Problem. Das Prinzip funktioniert vielleicht noch, ich denke, es gibt Bibliotheken, die ein (fast) vollständiges DOM vortäuschen, aber ich bin mir nicht sicher, dass das als "derselbe Ansatz" gilt. – ShadSterling

Verwandte Themen