使用角度动态响应对http.get调用进行单元测试

时间:2016-04-29 16:11:29

标签: angularjs

是否可以使用实际响应对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指定的超时时间内未调用异步回调。

2 个答案:

答案 0 :(得分:0)

单元测试中的依赖关系应该被嘲笑。单元测试,如 顾名思义,应该测试单位而不是它的依赖。

答案 1 :(得分:0)

通过在beforeEachProviders中添加以下代码片段来工作 -

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

这将消除超时错误,您可以测试来自API的实际动态响应。