我试图通过将 URL 设置为测试图像的属性并使用事件处理程序检查URLs
是否顺利来验证图像。到目前为止,我所拥有的是:Qunit
src
error
test('image',function() {
var test_image = $('#test-image');
test_image.error(function(e) { // properly triggered
console.log(e);
is_valid = false;
// ok(false,'Issue loading image'); breaks qunit
});
var is_valid = true;
test_image.attr('src','doesntexist');
console.log('checking is_valid'); // occurs before error event handler
if (is_valid) { // therefore always evaluates to the same
ok(true,'Image properly loaded');
} else {
ok(false,'Issue loading image');
}
});
我的问题是,虽然error
事件被正确触发,但它似乎以异步方式发生并且在评估之后is_valid
(因此无论我进行什么检查,结果总是相同的)。我尝试ok()
在事件处理程序中添加断言error
,但出现以下错误:
Error: ok() assertion outside test context
如何根据error
事件处理程序内部执行的处理运行断言?
alert('test');
PS:如果我在检查之前插入 a ,is_valid
它可以正常工作(这证实了错误处理程序是异步的问题),但您可以想象这是不可接受的。我尝试使用setTimeout
延迟执行 if 语句,但它带来了相同的断言上下文错误。