在节点中运行浏览器javascript单元测试

时间:2011-10-13 21:42:49

标签: javascript node.js

我有一个项目,我想将测试从rhino移到nodejs(rhino只需要很长时间才能启动并加载envjs)。这是当前的阻挡者,然后才能继续前进:

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

这抱怨窗口没有被定义 - 我不知道如何获得我在shell中创建的'window'(#!/ usr / bin / env node)脚本(见下文,请原谅)混乱,因为我已经达到“尝试任何事情和所有事情”的要点。)

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

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

我想在这里做不可能的事吗?或者是否有一个非常简单的浏览器友好的东西,我可以做到这一点?

1 个答案:

答案 0 :(得分:2)

您是否考虑过使用PhantomJS代替节点?

  

PhantomJS是一款带有JavaScript API的无头WebKit。它有快速和   对各种Web标准的本机支持:DOM处理,CSS选择器,   JSON,Canvas和SVG。

     

PhantomJS是现场快速无头测试的最佳解决方案   抓取,页面捕获,SVG渲染器,网络监控等等   其他用例。

因为它是真正的浏览器,所以您不需要jsdom或envjs。 JavaScript continuous testing with QUnit, PhantomJS and Powershell可能会帮助您入门。