私は、Angularのインメモリデータサービスから提供される偽のhttpバックエンドを使用するサービスの単体テストを試みています。Promiseを返すAngular 2サービスのテスト
describe('getCars() method ',() => {
it('should return a resolved Promise', inject([DataService], (service: DataService) => {
service.getCars().then((value) => {
expect(value.length).toBe(3);
});
}));
});
問題は私が原因で機能がどのように機能するかを注射で、非同期service.getCars()コールを処理するためにジャスミンの行わコールバックを使用することはできませんです。これは、関連するコードです。私はasyncのテストヘルパーを使用することはできません。これは、約束事では動作しないためです。だから私は解決する約束を待つ方法を知りません---テストはちょうどに達することなく実行されます。を期待してください。
方法テストベッドからサービスを取得して、おかげで動作します。しかし、私が非同期ソリューションを試してみると、カルマテストランナーは「非同期ゾーンテスト内からsetIntervalを使用できない」というエラーを表示します。 –
ええ、あなたが明示的にsetIntervalを使用しているか、Observable.delayが使用しています。 'async'では使用できません。あなたは 'fakeAsync'でもそれを使うことができます。 「参照」のリンクも参照してください。 'fakeAsync'の使い方を示しています。 –