Я пытаюсь протестировать компонент, который внедряет 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, что это способ предоставить инъекцию в среде тестирования. Но, как я сказал, мне не повезло.
Я что-то не так делаю? Или я должен заранее установить какое-то другое свойство в каком-либо файле конфигурации?