2017-05-29 34 views
1

私はngOnInitメソッドを使用しています。テスト前に非同期ngOninitが完了するのを待つ方法

非同期処理が完了したら、expectステートメントを実行するにはどうすればよいですか?

it('test things once all the promises declared in ngOninit are resolved',() => { 
    comp.ngOnInit(); 

    // I want to test that comp.property is like expected 

}); 

私のコンポーネントのメソッドは次のようになります。それは完全なとき

OnInit() { 
    this.asyncMethod(); 
}; 

asyncMethod() { 
    this.methodThatReturnsPromise().then(() => { 
    this.property = this.otherPropertyNowResolved; 
    }) 
}; 
+1

はどのようにあなたのプログラムで何かが知っているのですか?確認できるコールバックの内部ではどうなりますか? – jonrsharpe

+0

コールバックにいくつかの初期化ロジックがあります – Lev

+0

それを拡張できますか? [mcve]を与える。 – jonrsharpe

答えて

4
fixture = TestBed.createComponent(MyComponent); 


it('test things once all the promises declared in ngOninit are resolved', async(() => { 
     fixture.detectChanges(); 
     fixture.whenStable().then(
        () => { 
         // This should run once ngOnInit is completed 

        } 
       ); 
})); 
+0

ngOnintのすべての約束が解決された後にそのコールバックが実行されない – Lev

+0

あなたが提供した情報から、これは私が達成したものです。設定に関するコードをもっと表示してください。正しくデバッグしてみてください。 'comp.ngOnInit();'を明示的に呼び出す必要はありません。 –

+0

https://angular.io/docs/ts/latest/guide/testing.html#!#when-stable –

関連する問題