FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[QUnit] asyncTest() および stop() を簡単に解説

QUnitでは、非同期テスト用のAPIとして asyncTest(), stop(), start() を提供している。
ある程度使い方がわかったので解説してみる。

1. asyncTest()
asyncTest()実行後は、start()が実行されるまで次のtest()またはasyncTest()を実行しない。
<asyncTest()の例>
  asyncTest('asyncTest', function() {
    setTimeout(function(){
      ok(true, 'asyncTest');
      start();
    }, 10);
  });
  test('after test', function() {
    ok(true, 'after test')
  });
実行結果は次のようになる。
asyncTest1.png

asyncTest()を使用しない場合、
  test('not asyncTest', function() {
    setTimeout(function(){
      ok(true, 'not asyncTest');
      start();
    }, 10);
  });
  test('after test', function() {
    ok(true, 'after test')
  });
実行結果は次のようになる。
asyncTest2.png
setTimeoutの結果を待たずにtest('after test', ...)が実行されるため、setTimeout内のテストがスキップされた状態になる。

2. stop()
asyncTest()と同様、stop()実行後も、start()が実行されるまで次のtest()またはasyncTest()を実行しない。
上記asyncTest()の例をstop()を使って書くと、
  test('stop test', function() {
    stop();
    setTimeout(function(){
      ok(true, 'stop test');
      start();
    }, 10);
  });
  test('after test', function() {
    ok(true, 'after test')
  });
となり、実行結果は次のようになる。
asyncTest3.png

3. asyncTest()およびstop()使用時の注意事項
asyncTest()もstop()も、次のtest()またはasyncTest()の実行を保留する。
しかし、test()またはasyncTest()外のコードは保留されずに実行される
例を示すと、
  var testval = 0;
  asyncTest('asyncTest', function() {
    setTimeout(function(){
      ok(true, 'testval = ' + testval);
      testval = 1;
      ok(true, 'testval = ' + testval);
      start();
    }, 10);
  });
  testval = 2;
  test('after test', function() {
    ok(true, 'testval = ' + testval);
  });
  testval = 3;
この実行結果は次のようになる。
asyncTest4.png
処理の実行順序が
asyncTest('asyncTest', ...) 実行でsetTimeout起動

testval = 2

testval = 3

10ミリ秒後にsetTimeout(...) が実行され、testval = 1 とstart()実行

test('after test', ...) 実行
となっていることがわかる。
これは、QUnitがtest()およびasyncTest()をキューイングして保留しているためで、キューイング対象外のコードは保留されずに実行される。

4. asyncTest()およびstop()を使用してできること
タイマー起動される処理、イベント起動処理(onLoadイベント含む)、サーバーと通信する処理などのテストができる。
次エントリで、QUnitを使ったイベント起動処理テストの例を書く予定。
(書きました → QUnit & jQuery でイベント起動処理のテストを行う
スポンサーサイト

コメント

コメントの投稿

非公開コメント

プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。