assert.async()

追加されたバージョン: 1.16.0.

説明

async( count = 1 )

QUnitに非同期操作を待つように指示します。

名前 説明
count (数値) 予期される呼び出し数。デフォルトは1

assert.async()はコールバック関数と一時停止を処理し、テスト処理がコールバック関数が呼び出されるまで一時停止します。コールバックは、必要な呼び出し回数より多く呼び出されるとエラーをスローします。

関連項目

コールバックを待つ

コールバックからのdone()呼び出しを待つようQUnitに指示します。

function fetchDouble (num, callback) {
  const double = num * 2;
  callback(double);
}

QUnit.test('async example', assert => {
  const done = assert.async();

  fetchDouble(21, res => {
    assert.strictEqual(res, 42, 'Result');
    done();
  });
});

複数のコールバックを待つ

assert.async()を複数回呼び出して、複数の非同期操作を待ちます。各doneコールバックはテストに合格するために正確に1回呼び出す必要があります。

QUnit.test('two async calls', assert => {
  const done1 = assert.async();
  const done2 = assert.async();

  fetchDouble(3, res => {
    assert.strictEqual(res, 6, 'double of 3');
    done1();
  });
  fetchDouble(9, res => {
    assert.strictEqual(res, 18, 'double of 9');
    done2();
  });
});

複数の呼び出しを要求

countパラメータを使用して、同じコールバックへの複数の呼び出しを要求できます。以下の例では、テストは正確に3回の呼び出し後に合格します。

function uploadBatch (batch, notify, complete) {
  batch.forEach((item) => {
    // Do something with item
    notify();
  });
  complete(null);
}

QUnit.test('multiple calls example', assert => {
  assert.timeout(1000);

  const notify = assert.async(3);
  const done = assert.async();

  uploadBatch(
    ['a', 'b', 'c'],
    notify,
    (err) => {
      assert.strictEqual(err, null, 'complete error parameter');

      done();
    }
  );
});