在这篇文章中,我询问如何检查qUnit
图像是否正确加载。解决方案是使用asyncTest
,因为error
事件处理程序是异步的。
URLs
现在我正在尝试通过将它与循环组合来重新使用此代码来检查多个,for
但这一点都不顺利。
第一次尝试:for
内部循环asyncTest
//stop(); // no difference
asyncTest('image',function() {
//stop(); // no difference
var urls = ['a','b'];
for (var i in urls) {
//stop(); // no difference
var url = urls[i];
var test_image = $('#test-image');
test_image.error(function(e) {
ok(false,'Issue loading image '+url);
start();
});
test_image.load(function() {
ok(true,'Image properly loaded '+url);
start();
});
//stop(); // no difference
test_image.attr('src',url);
}
});
结果:1 个测试,4 个相同的断言(在最后一个 url)
第二次尝试:asyncTest
内for
循环
var urls = ['c','d'];
for (var i in urls) {
var url = urls[i];
//stop(); // no difference
asyncTest('image-'+url,function() {
var test_image = $('#test-image');
test_image.error(function(e) {
console.log('ERROR',$(this).attr('src'));
ok(false,'Issue loading image '+url);
start();
});
test_image.load(function() {
console.log('OK',$(this).attr('src'));
ok(true,'Image properly loaded '+url);
start();
});
//stop(); // prevents tests from running
test_image.attr('src',url);
});
}
结果:2个单独的测试,首先有1个断言,最后有与for循环中的迭代一样多的断言,并且总是只检查最后一个url。
如何asyncTest
与 for 循环结合使用,以便每次迭代有 1 个测试+断言(迭代值用于断言)?