如何使用JavaScript对图像预加载等单元进行单元测试?

时间:2011-10-18 08:01:37

标签: javascript image unit-testing document

我正在尝试对JavaScript网络跟踪功能进行单元测试,因为我们打算将其作为库公开,并希望确保其界面保持稳定。 JavaScript网络跟踪与图像预加载的工作方式类似:

if (document.images) {
    var image = new Image();
    image.onload = function () {
        ...
    };
    image.src = pixelUrl;
}

在单元测试中(使用js-testdriver)我现在正在尝试验证是否已使用右pixelUrl创建了一个图像我认为我必须做这样的事情:

call_the_reporting_function();

assertNotUndefined(document.images[0]);
assertNotUndefined(document.images[0].src);

我的问题是现在第一个断言已经失败了。似乎新图像没有立即添加到document.images。

有人知道如何在JavaScript中对这些事情进行适当的单元测试吗?

由于

的Stefan

1 个答案:

答案 0 :(得分:0)

一种可能的解决方案,就是我们刚刚采取的方式,是通过提取上面的部分进行html操作并模拟它来规避问题。

虽然这个解决方案很好,但它肯定至少有两个缺点:   - 如果不使用特定于浏览器的部件,使用基于浏览器的单元测试框架(如jsTestDriver,即我们正在使用的内容)是没有意义的   - 代码未经测试,您必须确保它可以手动操作或使用运行时昂贵的Selenium测试(您可以在HttpClient之前配置代理并简单地捕获浏览器发出的所有Web跟踪请求。断言完成在捕获的请求)