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
イベントハンドラー内で実行された処理に基づいてアサーションを実行するにはどうすればよいですか?
PS:alert('test');
チェックする前にaを挿入すると、is_valid
正常に動作します(これにより、エラーハンドラが非同期であるという問題が確認されます)が、ご想像のとおり、受け入れられません。ifステートメントの実行を遅らせるためにを使用しようとしsetTimeout
ましたが、同じアサーションコンテキストエラーが発生します。