geeks
geeks

Reputation: 2055

Running mocha test but Getting error: ReferenceError: document is not defined

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

Answers (4)

if you don't need to test it in a browser, then you can use jsdom-global:

mocha -r jsdom-global/register

Upvotes: 11

ShadSterling
ShadSterling

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

Grzegorz Pawlik
Grzegorz Pawlik

Reputation: 2216

You should use a headless browser to avoid this problem. Try with mocha-phantomjs.

Upvotes: -1

Louis
Louis

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

Related Questions