检查是否图像正常装载Qunit(Checking if image properly loaded

2019-09-20 16:02发布

我试图验证图像URLsQunit通过设置URL作为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事件处理程序?

PS:如果我插入一个alert('test'); 检查前is_valid它工作正常(与错误处理程序是异步的,确认的问题),但你可以想像是不能接受的。 我试着使用setTimeout拖延if语句的执行,但其带来的断言正文错误。

Answer 1:

通过QUnit API快速寻找,我看你应该使用asyncTest功能这一点。 在设置您的SRC属性test_image ,挂钩一个函数来load事件。 下面是一个未经测试的代码:

asyncTest('image',function() {
    var test_image = $('#test-image');
    test_image.error(function(e) {
        console.log(e);             
        ok(false,'Issue loading image');
        start();
    });
    test_image.load(function() {
        ok(true,'Image properly loaded');
        start();
    });
    test_image.attr('src','doesntexist');
});


文章来源: Checking if image properly loaded with Qunit