我正在尝试对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
答案 0 :(得分:0)
一种可能的解决方案,就是我们刚刚采取的方式,是通过提取上面的部分进行html操作并模拟它来规避问题。
虽然这个解决方案很好,但它肯定至少有两个缺点: - 如果不使用特定于浏览器的部件,使用基于浏览器的单元测试框架(如jsTestDriver,即我们正在使用的内容)是没有意义的 - 代码未经测试,您必须确保它可以手动操作或使用运行时昂贵的Selenium测试(您可以在HttpClient之前配置代理并简单地捕获浏览器发出的所有Web跟踪请求。断言完成在捕获的请求)