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