我有以下情况:
export class HttpClientService extends Http {...}
export class AppHttpClientService extends HttpClientService {...}
我想要的是覆盖HttpClientService
一个模拟类,这样我就可以只对AppHttpClientService
.
我怎样才能做到这一点?
我有以下情况:
export class HttpClientService extends Http {...}
export class AppHttpClientService extends HttpClientService {...}
我想要的是覆盖HttpClientService
一个模拟类,这样我就可以只对AppHttpClientService
.
我怎样才能做到这一点?
使用 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);
这样,您将只使用您想要的一部分,作为您的原始父组件,以在测试中使用。
现在,当您为子组件创建实例时,它将使用父组件的这个覆盖版本。