Angular-覆盖/模拟方法从HTTP获取,发布,放置,删除以进行测试

时间:2018-09-17 10:28:33

标签: angular typescript jasmine

我正在尝试模拟Http类,以便可以将其注入要测试的服务上。

通常,我创建一个模拟类,该类扩展了将被覆盖的类。对于这种情况,我做了这样的事情:

export class MockHttp extends Http {
    constructor(){super(undefined, undefined);}
    get(url: string, options?: RequestOptionsArgs): Observable<Response> {
        return new Observable((observer) => {
            observer.next(undefined);
            observer.complete();
        });
    }
}

但是intelisense的{​​{1}}在方法vs code上给了我以下错误:

  

类型'MockAppHttpClientService'的属性'get'不能分配给基本类型'Http'的相同属性。

有人知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

您不必编写自己的模拟程序,因为这不是一项琐碎的任务。 Angluar已经提供了实用程序来模拟http客户端以进行单元测试。官方文档

中有足够详细的描述

https://angular.io/guide/testing#testing-http-services

简而言之,请使用HttpClientTestingModule