web-dev-qa-db-fra.com

NullInjectorError: StaticInjectorError (DynamicTestModule) [ToastrService -> InjectionToken ToastConfig]: dans tslint angular 8

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();

}));

3
tamilselvan s

Changez les fournisseurs comme ci-dessous

providers: [
  {provide: ToastrService, useClass: ToastrService}
]
1
Ininiv

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 },
      ],
1
Rene Enriquez

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

0
Anmol Narang