2013-12-12 116 views
4

我刚刚开始使用JS单元测试,并且每个测试都进行得很顺利(我和Mocha一起)我遇到问题,但它需要一些'文档'属性,如:摩卡'未捕获的ReferenceError:窗口未定义'

它给了我下面的错误:

Mocha 'Uncaught ReferenceError: document is not defined' 

我试运行的命令是:

mocha -u bdd test.js --reporter spec 

现在我的问题是,当我需要文档和DOM对象的访问权限时,是否需要一些PhantomJS(或simillar工具)进行测试?或者我只是打开任何建议如何解决这个问题。

+0

你试过window.document.getElementsByTagName()吗? – Bora

+0

它不会导致既不窗户既不存在文件。到目前为止,我提出了“模拟”这个对象的想法。 –

+0

您可以使用诸如mocha-phantomjs之类的东西,但从长远来看最简单的方法是使用Karma来运行您的摩卡测试。它将启动浏览器并在这些浏览器环境中运行你的代码。您也可以使用它无头,只需使用PhantomJS。 – oligofren

回答

4

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

你想选择的解决方案实际上取决于你正在测试的代码。我用jsdom得到了很好的结果,只需要导航DOM树中的节点就可以到test code。 jsdom肯定不会这样做。我不确定限制在哪里。

相关问题