0

我有以下情况:

export class HttpClientService extends Http {...}    
export class AppHttpClientService extends HttpClientService {...}

我想要的是覆盖HttpClientService一个模拟类,这样我就可以只对AppHttpClientService.

我怎样才能做到这一点?

4

1 回答 1

0

使用 TestBed,您可以为您的服务提供模拟,例如HttpClientServiceMock

您的模拟可以是一个简单的类,例如声明:

class HttpClientServiceMock {
  get(url) {
    ...
  }
}

然后用于TestBed.overrideComponent覆盖您的组件使用的服务。

例子:

TestBed.overrideComponent(AppHttpClientService, {
  set: {
    providers: [{ provide: HttpClientService, useValue: HttpClientServiceMock}]
  }
});

最后一个示例用于覆盖服务。要对组件执行相同操作,您可以尝试:

TestBed.overrideComponent(ParentComponent, {
  set: {
    template: '<span>{{data}}</span>'
  }})
  .createComponent(ParentComponent);

这样,您将只使用您想要的一部分,作为您的原始父组件,以在测试中使用。

现在,当您为子组件创建实例时,它将使用父组件的这个覆盖版本。

于 2018-09-22T03:27:17.780 回答