我有以下情况:
export class HttpClientService extends Http {...}
export class AppHttpClientService extends HttpClientService {...}
我想要的是将HttpClientService
覆盖为模拟类,这样我就只能对AppHttpClientService
上存在的函数进行测试。
我该怎么做?
答案 0 :(得分: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);
这样,您将只使用想要的部分作为原始父组件在测试中使用。
现在,当您为子组件创建实例时,它将使用父组件的此覆盖版本。