開発覚書はてな版

個人的な開発関連の備忘録

【Jasmine】Promiseのテスト方法

概要

JasmineでのPromiseをテスト時にはテスト定義の引数にdoneを利用します。
doneを利用することで、非同期処理完了後まで待機してくれます。
doneを設定しない場合は、Promise.then内の処理をスルーしてテストを終了するため、正常なテスト結果がでない場合があります。

動作環境

  • TypeScript 2.7.2
  • Jasmine 2.8.0

サンプルソース

    it ('Promise Test 1', (done: DoneFn) => {
        // setup
        const func = new Promise<string>((resolve, reject) => {
            setTimeout(() => {
                resolve('ok');
            }, 500);
        });

        // exercise
        func.then(data => {
            // verify
            expect(data).toBe('ok');

            // 完了待機
            done();
        });
    });

注意事項

長い非同期処理については jasmine.DEFAULT_TIMEOUT_INTERVALを利用してタイムアウト値を調整して下さい。

参考URL