Reputation: 2055
I am using mocha testing framework to test Http rest-api. I want to generate test-report for all test case, but when I ran mocha --reporter html > report.html
Getting following error
/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
Upvotes: 19
Views: 12975
Reputation: 154
if you don't need to test it in a browser,
then you can use jsdom-global
:
mocha -r jsdom-global/register
Upvotes: 11
Reputation: 1820
I was able to solve a simpler version of this problem by conditionally defining document
:
let document = (typeof document === "undefined") ? {} : document;
I expect you could use the same approach, but would need to set document
to something that mocks createElement
.
Upvotes: -1
Reputation: 2216
You should use a headless browser to avoid this problem. Try with mocha-phantomjs.
Upvotes: -1
Reputation: 151370
The reporter named html
is only to be used when running Mocha in a browser. Running Mocha from the command line won't work with it.
There is a reporter named doc
, which outputs "html documentation" according to mocha --reporters
. By the way, when you run mocha --reporters
you won't see html
listed as a reporter, for the reason I've given above.
Upvotes: 13