是否可以使用实际响应对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
调用,它将暂停几秒钟,然后它将返回以下错误:
错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。
答案 0 :(得分:0)
单元测试中的依赖关系应该被嘲笑。单元测试,如 顾名思义,应该测试单位而不是它的依赖。
答案 1 :(得分:0)
通过在beforeEachProviders中添加以下代码片段来工作 -
beforeEachProviders(() => {
window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
setTimeout(function () {
console.log('inside timeout');
}, 500);
这将消除超时错误,您可以测试来自API的实际动态响应。