Карма - инъекционная проблема углового впрыска - PullRequest
0 голосов
/ 09 октября 2019

Я пытаюсь протестировать компонент, который внедряет InjectionToken, который я создал. Для тестирования я использую конфигурацию по умолчанию @ angular / cli для Karma.

Но я не могу обойти эту ошибку:

NullInjectorError: No provider for InjectionToken path.configuration!

Я пытался предоставить свой токен внутри провайдеров, когдаиспользуя TestBed.configureTestingModule следующим образом:

TestBed.configureTestingModule({
  imports: [RouterTestingModule],
  providers: [
    {
      provide: PATH_CONFIGURATION, useValue: { LOGIN: '/login' }
    }
  ],
  declarations: [HeaderComponent],

}).compileComponents();

Мое определение InjectionToken таково:

import { InjectionToken } from '@angular/core';
export interface PathConfiguration {
    LOGIN: string;
}
export const pathConfiguration: PathConfiguration = {
    LOGIN: '/login'
}
export const PATH_CONFIGURATION = new InjectionToken<PathConfiguration>('path.configuration');

И вот как я внедряю его внутри компонента:

constructor(
    @Inject(PATH_CONFIGURATION) private pathConfig: PathConfiguration
) { }

Я прочитал несколько сообщений о stackoverflow, что это способ предоставить инъекцию в среде тестирования. Но, как я сказал, мне не повезло.

Я что-то не так делаю? Или я должен заранее установить какое-то другое свойство в каком-либо файле конфигурации?

...