Угловой модульный тест - Как внедрить зависимости в TedBed с помощью useValue в поставщике TestBed - PullRequest
0 голосов
/ 10 июня 2019

Сервис, который я хочу протестировать, имеет следующий конструктор

constructor(@Inject('enviroment') environment) {
    this.initConfig(environment);
}

среда предоставляется в app.module под провайдерами

{ provide: 'environment', useValue: environment }

Итак, я настроил TestBed следующим образом

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [{ provide: 'environment', useValue: testEnv }, TestService]
    });
    service = TestBed.get(TestService);
});

И я продолжаю получать

 Error: StaticInjectorError(DynamicTestModule)[enviroment]: 
      StaticInjectorError(Platform: core)[enviroment]: 
        NullInjectorError: No provider for enviroment!

Сам код отлично работает при обслуживании / сборке, поэтому я предполагаю, что ошибка где-то в том, как я настроил TestBed? Я также пытался использовать фабрику безрезультатно.

beforeEach(() => {
    TestBed.configureTestingModule({
        providers: [{ provide: 'environment', useFactory: ()=>testEnv }, TestService]
    });
    service = TestBed.get(TestService);
});

1 Ответ

1 голос
/ 10 июня 2019

Я думаю, что это просто опечатка

отсутствует в enviro'n'ment

constructor(@Inject('enviroment') environment) {
...