2016-04-29 38 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

依赖于单位测试应该被嘲笑。单元测试,正如 名称所示,应该测试单元而不是它的依赖。