在节点中运行浏览器的JavaScriptunit testing

我有一个项目,我想把testing从rhino移动到nodejs(rhino只需要很长的时间来启动和加载envjs)。 这是目前的拦截器才能够前进:

ExampleSingleton = new function () { var something = someFunction () {/*Does something*/} $(window).bind('resize', something); }(); 

这个抱怨窗口没有被定义 – 我不知道如何获得我在shell(#!/ usr / bin / env节点)脚本中创build的'window'(见下文,并且饶恕混乱,正如我所知道的那样,“尝试任何事情”)。

 var dom = require("jsdom").jsdom() var window = global.window = dom.createWindow(); global.jQuery = require("jQuery"); global.$ = global.jQuery; .... require("path/to/file"); //This is where it breaks, before the tests even start 

我试过阅读和评估,但这并没有太大的帮助,当然错误被掩盖,因为它是一个匿名函数。

我在这里做不可能的事吗? 还是有一个非常简单的浏览器友好的事情,我可以做到这一点工作?

你有没有想过使用PhantomJS而不是节点?

PhantomJS是一个带JavaScript API的无头WebKit。 它支持各种网页标准,包括DOM处理,CSSselect器,JSON,Canvas和SVG。

PhantomJS是快速无头testing,网站抓取,页面捕获,SVG渲染器,networking监控和其他许多用例的最佳解决scheme。

因为它是一个真正的浏览器,你不需要jsdom或envjs。 使用QUnit,PhantomJS和Powershell进行JavaScript连续testing可能会帮助您开始使用。