Mocha“未捕获的引用错误:窗口未定义”

Osk*_*ura 5 javascript unit-testing mocha.js

我刚刚开始进行 JS 单元测试,虽然每个测试都进展顺利(我使用了 Mocha),但在它需要一些“文档”属性时遇到了问题,例如:

var baseTag  = document.getElementsByTagName('base');
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

Mocha 'Uncaught ReferenceError: document is not defined'
Run Code Online (Sandbox Code Playgroud)

我的测试运行命令是:

mocha -u bdd test.js --reporter spec
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当我需要访问文档和 DOM 对象时,我是否需要一些 PhantomJS(或类似工具)来进行测试?或者我只是愿意寻求任何建议如何解决这个问题。

Lou*_*uis 5

是的,您需要使用 PhantomJS 或jsdom之类的东西来针对某种 DOM 树运行代码。默认情况下,Node 不提供 DOM 树,因为它是大多数应用程序不需要的特定功能。

您想要选择什么解决方案实际上取决于您正在测试的代码。我使用 jsdom测试只需要导航 DOM 树中的节点的代码,取得了很好的结果。肯定有一个点 jsdom 不会这么做。我不确定极限在哪里。