この投稿qUnit
では、画像が正しく読み込まれたかどうかを確認する方法を尋ねていました。イベントハンドラーが非同期だっasyncTest
たので、解決策は使用することでした。error
今、このコードを再利用URLs
して、ループと組み合わせて複数をチェックしようとしていfor
ますが、これはまったくうまくいきません。
1 回目の試行:for
ループ内asyncTest
//stop(); // no difference
asyncTest('image',function() {
//stop(); // no difference
var urls = ['a','b'];
for (var i in urls) {
//stop(); // no difference
var url = urls[i];
var test_image = $('#test-image');
test_image.error(function(e) {
ok(false,'Issue loading image '+url);
start();
});
test_image.load(function() {
ok(true,'Image properly loaded '+url);
start();
});
//stop(); // no difference
test_image.attr('src',url);
}
});
結果: 4 つの同一のアサーションを含む 1 つのテスト (最後の URL)
2 回目の試行:ループ asyncTest
内for
var urls = ['c','d'];
for (var i in urls) {
var url = urls[i];
//stop(); // no difference
asyncTest('image-'+url,function() {
var test_image = $('#test-image');
test_image.error(function(e) {
console.log('ERROR',$(this).attr('src'));
ok(false,'Issue loading image '+url);
start();
});
test_image.load(function() {
console.log('OK',$(this).attr('src'));
ok(true,'Image properly loaded '+url);
start();
});
//stop(); // prevents tests from running
test_image.attr('src',url);
});
}
結果: 2 つの個別のテスト。最初は 1 つのアサーションで、最後は for ループの反復と同じ数のアサーションで、常に最後の URL のみがチェックされます。
asyncTest
反復ごとに 1 つのテスト + アサーション (反復値をアサーションに使用) にするために、for ループと組み合わせるにはどうすればよいですか?