Angular 影响基本测试问题的构造函数注入
我有一个Angular6项目,其组件中有以下构造函数:Angular 影响基本测试问题的构造函数注入,angular,angular6,Angular,Angular6,我有一个Angular6项目,其组件中有以下构造函数: constructor(@Inject('httpClient')private httpClient: HttpClient) { } describe('AppComponent', () => { beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ AppComponent ], imports
constructor(@Inject('httpClient')private httpClient: HttpClient) {
}
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
imports: [
FormsModule,
HttpClientModule,
HttpClientTestingModule
]
}).compileComponents();
}));
但是,它可能会影响组件生成测试的结果(例如,“应创建应用程序”),并显示与以下内容相关的消息:
Error: StaticInjectorError(DynamicTestModule)[httpClient]:
StaticInjectorError(Platform: core)[httpClient]:
NullInjectorError: No provider for httpClient!
我已经尝试导入HttpClientModule和HttpClientTestingModule,但并没有解决问题。
与描述组件相关的代码:
constructor(@Inject('httpClient')private httpClient: HttpClient) {
}
describe('AppComponent', () => {
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [
AppComponent
],
imports: [
FormsModule,
HttpClientModule,
HttpClientTestingModule
]
}).compileComponents();
}));
我可以采取哪些步骤来消除错误消息?尝试模拟服务。
首先,创建虚拟服务:
class MockHttpClient { }
然后,在TestBed providers
中使用模拟服务,而不是HttpClient
providers: [
{ provide: HttpClient, useClass: MockHttpClient },
]
这样,您就不必实现服务的所有依赖项。
当然,您将无法使用真正的
HttpClient
功能,但这不应该是一个问题,因为您应该只测试组件,而不是服务。如果您面临与构造函数相关的测试问题,并且出现涉及InjectorError的消息,您可以使用configureTestingModule添加导入
例如:
TestBed.configureTestingModule({
imports: [
HttpClientModule
]
})