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

Running browser javascript unit tests in node

本文关键字:javascript 单元测试 浏览器 运行 node      更新时间:2023-09-26

我有一个项目,我想把测试从rhino转移到nodejs (rhino需要很长时间才能启动和加载envjs)。这是在能够继续前进之前的当前阻塞器:

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

这个抱怨没有定义窗口-我不知道如何获得我在shell中创建的"窗口"(#!)我编写的/usr/bin/env节点)脚本(见下文,请原谅混乱,因为我已经到了"尝试任何东西"的地步)。

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而不是node?

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

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

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