Lorsque j'exécute les tests unitaires dans angular 8 project, j'ai trouvé une erreur dans ngx-toastr
NullInjectorError: StaticInjectorError (DynamicTestModule) [ToastrService -> InjectionToken ToastConfig]:
Et j'ai importé les modules requis dans le fichier spec.ts, et j'ai également déclaré forRoot () dans app.module.ts
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [MatTabsModule,
ReactiveFormsModule,
MatTooltipModule,
HttpClientTestingModule,
RouterTestingModule,
ToastrModule
],
declarations: [CommunicationComponent],
providers: [
ToastrService,
]
})
.compileComponents();
}));
Changez les fournisseurs comme ci-dessous
providers: [
{provide: ToastrService, useClass: ToastrService}
]
Ces approches n'ont pas fonctionné pour moi. Je devais fournir ma propre valeur pour le fournisseur. C'est ce qui a fonctionné pour moi:
Tout d'abord, j'ai déclaré ma propre implémentation "factice":
const toastrService = {
success: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { },
error: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { }
};
Ensuite, j'ai indiqué la valeur à utiliser dans la section des fournisseurs:
providers: [
...
{ provide: ToastrService, useValue: toastrService },
],
importer {ToastrModule} depuis 'ngx-toastr';
beforeEach(async(() => {
TestBed.configureTestingModule({
imports: [ToastrModule.forRoot()],
})
.compileComponents();
}));
Ajoutez ToastrModule.forRoot () dans les importations comme indiqué ci-dessus et votre erreur pourrait être résolue