angularjs 在angular中使用动态响应对http.get调用进行单元测试

hec6srdp  于 2023-09-30  发布在  Angular
关注(0)|答案(2)|浏览(120)

是否可以使用实际的响应而不是模拟响应来对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。

1tuwyuhd

1tuwyuhd1#

单元测试中的依赖关系应该去掉。单元测试,顾名思义,应该测试单元,而不是它的依赖项。

evrscar2

evrscar22#

它的工作原理是在beforeEachProviders中添加下面的代码段-

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

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

相关问题