2016-04-29 5 views
0

http.get呼び出しを実際の応答で単体テストできますが、応答を嘲笑することはできませんか?動的応答でhttp.get呼び出しをユニット単位でテストする

... 
export class CarService{ 
    ... 
    getCars():Observable<any>{ 
     return this.http.get("http://someurl/cars").map(res => res.json()); 
    } 
    ... 
} 

ユニットテスト:

it('retrieves all the cars', injectAsync([CarService], (carService) => { 
    return carService.getCars().toPromise().then((result) => {   
    expect(result.length).toBeGreaterThan(0); 
    });  
})); 

それはhttp.getコールを実行し、それが数秒間一時停止すると、それは以下のエラーが返されます:単位で

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

答えて

0

それはbeforeEachProviders内スニペットの下に追加して働いている -

beforeEachProviders(() => { 
    window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; 
    setTimeout(function() { 
     console.log('inside timeout'); 
    }, 500); 

を、これはエラーを、時間を削除し、あなたがAPIからの実際の動的応答をテストすることができます。

0

依存関係をテストは嘲笑されるべきです。ユニットテストは、 の名前の通り、ユニットをテストし、その依存関係をテストするべきではありません。

関連する問題