Проверка правильности загрузки изображения с помощью Qunit

Я пытаюсь проверить изображение URLsс помощью Qunit, установив 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, но это приводит к той же ошибке контекста утверждения.

7
задан Max 2 August 2012 в 11:30
поделиться