我正在使用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
答案 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
的内容。