15

我正在使用 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

4 回答 4

11

仅当在浏览器中运行 Mocha时才使用命名的报告html器。从命令行运行 Mocha 将无法使用它。

有一个名为 的记者doc,根据 . 输出“html 文档” mocha --reporters。顺便说一句,当你跑步时,mocha --reporters你不会看到html被列为记者,原因我上面已经给出了。

于 2015-09-26T13:04:46.817 回答
10

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

mocha -r jsdom-global/register
于 2018-12-17T15:58:27.187 回答
0

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

于 2016-05-23T20:25:18.447 回答
0

我能够通过有条件地定义来解决这个问题的一个更简单的版本document

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

我希望您可以使用相同的方法,但需要设置document为 mocks 的东西createElement

于 2017-07-14T15:09:02.173 回答