运行mocha测试但获取错误:ReferenceError:文档未定义

时间:2015-09-26 07:22:47

标签: javascript html mocha test-reporting

我正在使用mocha测试框架来测试Http rest-api。我想为所有测试用例生成测试报告,但是当我运行mocha --reporter html > report.html获取以下错误

/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

4 个答案:

答案 0 :(得分:6)

在浏览器中运行Mocha 时,名为html的记者 。从命令行运行Mocha不会使用它。

有一位名为doc的记者,它输出&#34; html文档&#34;根据{{​​1}}。顺便说一下,当你运行mocha --reporters时,你不会看到mocha --reporters被列为记者,原因我已经给出了上述原因。

答案 1 :(得分:1)

如果您不需要在浏览器中对其进行测试, 那么您可以使用jsdom-global

mocha -r jsdom-global/register

答案 2 :(得分:0)

您应该使用无头浏览器来避免此问题。试试mocha-phantomjs

答案 3 :(得分:0)

通过有条件地定义document

,我能够解决这个问题的更简单版本
let document = (typeof document === "undefined") ? {} : document;

我希望您可以使用相同的方法,但需要将document设置为模拟createElement的内容。