93

Angular 2 でテストするとき、いつ TestBedで async 関数を使用しますか?

これはいつ使うの?

 beforeEach(() => {
        TestBed.configureTestingModule({
            declarations: [MyModule],
            schemas: [NO_ERRORS_SCHEMA],
        });
    });

で、これいつ使うの?

beforeEach(async(() => {
    TestBed.configureTestingModule({
        declarations: [MyModule],
        schemas: [NO_ERRORS_SCHEMA],
    });
}));

誰でもこれについて教えてもらえますか?

4

2 に答える 2

26

テストで非同期呼び出しを行うと、非同期呼び出しが完了する前に実際のテスト関数が完了します。呼び出しが完了したときの状態を確認する必要がある場合 (通常はそうです)、テスト フレームワークは、まだ非同期作業が行われている間にテストが完了したと報告します。

使用async(...)すると、テストを完了として処理する前に、return promise または observable が完了するまで待機するようにテスト フレームワークに指示します。

it('should show quote after getQuote promise (async)', async(() => {
  fixture.detectChanges();

  fixture.whenStable().then(() => { // wait for async getQuote
    fixture.detectChanges();        // update view with quote
    expect(el.textContent).toBe(testQuote);
  });
}));

に渡されたコードは、テスト関数自体が完了したthen(...)に実行されます。テストを完了として処理する前に、promise と observable が完了するのを待つ必要があることをテスト フレームワークに認識させます。async()

こちらもご覧ください

于 2016-10-19T09:11:14.433 に答える