NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]: in tslint angular 8
NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]: in tslint angular 8
当我运行在angular8项目进行单元测试时,发现ngx-toastr出错
NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]:
并且我在 spec.ts 文件中导入了所需的模块,并且我还在 app.module.ts
中声明了 forRoot()
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MatTabsModule,
ReactiveFormsModule,
MatTooltipModule,
HttpClientTestingModule,
RouterTestingModule,
ToastrModule
],
declarations: [CommunicationComponent],
providers: [
ToastrService,
]
})
.compileComponents();
}));
像下面这样更改提供商
providers: [
{provide: ToastrService, useClass: ToastrService}
]
从'ngx-toastr'导入{ToastrModule};
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ToastrModule.forRoot()],
})
.compileComponents();
}));
如上所示在导入中添加 ToastrModule.forRoot(),您的错误可能会得到解决
这些方法对我不起作用。我必须为提供者提供我自己的价值。
这对我有用:
首先,我声明了我自己的 "dummy" 实现:
const toastrService = {
success: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { },
error: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { }
};
然后,我在提供者部分指出要使用的值:
providers: [
...
{ provide: ToastrService, useValue: toastrService },
],
您可能忘记添加 .forRoot()
只需在您的 module.ts
中添加这种方式
ToastrModule.forRoot()
当我运行在angular8项目进行单元测试时,发现ngx-toastr出错
NullInjectorError: StaticInjectorError(DynamicTestModule)[ToastrService -> InjectionToken ToastConfig]:
并且我在 spec.ts 文件中导入了所需的模块,并且我还在 app.module.ts
中声明了 forRoot() beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MatTabsModule,
ReactiveFormsModule,
MatTooltipModule,
HttpClientTestingModule,
RouterTestingModule,
ToastrModule
],
declarations: [CommunicationComponent],
providers: [
ToastrService,
]
})
.compileComponents();
}));
像下面这样更改提供商
providers: [
{provide: ToastrService, useClass: ToastrService}
]
从'ngx-toastr'导入{ToastrModule};
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ToastrModule.forRoot()],
})
.compileComponents();
}));
如上所示在导入中添加 ToastrModule.forRoot(),您的错误可能会得到解决
这些方法对我不起作用。我必须为提供者提供我自己的价值。 这对我有用:
首先,我声明了我自己的 "dummy" 实现:
const toastrService = {
success: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { },
error: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { }
};
然后,我在提供者部分指出要使用的值:
providers: [
...
{ provide: ToastrService, useValue: toastrService },
],
您可能忘记添加 .forRoot()
只需在您的 module.ts
中添加这种方式ToastrModule.forRoot()