Можем ли мы настроить инжектор в TestBed

Я пишу тестовые примеры для пользовательского ErrorHandler в Angular. В конструкторе я добавил зависимость Injector, так как узнал, что провайдеры инициализируются после ErrorHandler. Это указано ниже:

export class ApplicationErrorHandler implements ErrorHandler {
    constructor(injector: Injector) {
       this.injector = injector;
    }
}

Теперь, когда я пишу тестовые примеры, как мне создать свой обработчик ошибок. Могу ли я добавить Injector в качестве провайдера или сделать это, как показано ниже:

errorHandler = injector.get(ApplicationErrorHandler);

В любом случае я получаю errorHandler как undefined и следующую ошибку:

Error: Unexpected value '[object Object]' imported by the module 'DynamicTestModule'

Я ценю любую помощь в том, как написать это так, чтобы я мог его протестировать. Благодарю вас!


person Divya    schedule 30.06.2018    source источник
comment
Вы можете опубликовать свой DynamicTestModule   -  person Sajeetharan    schedule 30.06.2018
comment
Я не настраиваю какой-либо модуль как таковой. Но ниже мой испытательный стенд. beforeEach(async() => { TestBed.configureTestingModule({ providers: [ ApplicationErrorHandler, LoggerService, Injector ], imports: [RouterTestingModule, AppInsights] }).compileComponents(); injector = TestBed.get(InjectionToken); errorHandler = injector.get(ApplicationErrorHandler); //errorHandler = new ApplicationErrorHandler(<any> injector); spyOn(errorHandler, 'logError'); });   -  person Divya    schedule 30.06.2018
comment
AppInsights Модуль или service? Эта ошибка часто возникает, когда вы неправильно предоставили услуги внутри массива импорта или любую другую неправильную комбинацию. stackoverflow.com/questions/40014712/   -  person Amit Chigadani    schedule 30.06.2018


Ответы (1)


Вышеупомянутая проблема обычно возникает, когда вы неправильно предоставляете провайдеров внутри модуля и наоборот. Просто дважды проверьте, правильно ли вы импортировали модули в раздел «Модули и услуги» поставщиков.

Связанная ссылка.

person Sajeetharan    schedule 30.06.2018
comment
Его не следует добавлять под ними обоими. Это работает сейчас. Спасибо Саджитаран! - person Divya; 30.06.2018
comment
не могли бы вы объяснить, что было не так и как вы это исправили? - person Manu Chadha; 11.01.2019