web-dev-qa-db-ja.com

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

angular 8プロジェクトでユニットテストを実行すると、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();

}));

3
tamilselvan s

以下のようにプロバイダーを変更します

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

これらのアプローチは私にはうまくいきませんでした。プロバイダーに自分の価値を提供する必要がありました。これは私のために働いたものです:

まず、自分の「ダミー」実装を宣言しました。

const toastrService = {
    success: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { },
    error: (message?: string, title?: string, override?: Partial<IndividualConfig>) => { }
  };

次に、プロバイダーセクションで使用する値を指定しました。

providers: [
        ...
        { provide: ToastrService, useValue: toastrService },
      ],
1
Rene Enriquez

import {ToastrModule} from 'ngx-toastr';

beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [ToastrModule.forRoot()],

    })
      .compileComponents();
  }));

上記のようにインポートにToastrModule.forRoot()を追加すると、エラーが解決する可能性があります

0
Anmol Narang