Тестирование UpgradeComponent выдает NullInjectorError: Нет поставщика для $ инжектора! ошибка - PullRequest
3 голосов
/ 16 марта 2020

У меня есть компонент angularjs, который я обновляю:

import { Directive, ElementRef, Injector, Output, EventEmitter } from '@angular/core';
import { UpgradeComponent } from '@angular/upgrade/static';

@Directive({
  selector: 'up'
})
export class UpDirective extends UpgradeComponent {
  constructor(elementRef: ElementRef, injector: Injector) {
    super('old', elementRef, injector);
  }
}

Этот компонент прекрасно работает, когда я запускаю приложение.

Однако, когда я пытаюсь протестировать Angular 8 компонент, который использует эту директиву, я получаю следующую ошибку:

NullInjectorError: StaticInjectorError(DynamicTestModule)[$injector]: 
  StaticInjectorError(Platform: core)[$injector]: 
    NullInjectorError: No provider for $injector!

Я предполагаю, что исходит от инжектора, который используется в UpgradeComponent. Однако я не уверен, как предоставить это моему spe c .ts.

Angular делает хорошую работу, документируя, как заставить это работать в приложении, но ничего о том, как тестировать: https://angular.io/api/upgrade/static/UpgradeComponent

Также посмотрел здесь: https://github.com/angular/angular/issues/24369, однако все еще не ясно, как тестировать.

1 Ответ

0 голосов
/ 24 марта 2020

Вот хороший пример того, как вы можете настроить тесты для компонентов, использующих его. Трудно быть более полезным без стекаблиц, но когда мне нужно было протестировать нечто подобное, это сработало для меня.

Когда я сделал это, я просто взял этот материал за пределы «этого», чтобы его можно было использовать как настроить. Я уверен, что большую часть этой настройки я сделал в beforeEach. Только что переменные, которые мне нужно было объявить в описании, были инициализированы в beforeEach, чтобы их можно было использовать в тестах.

Трудно быть более полезным без стекаблика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...