Тестирование дочернего элемента в форме вложенного шаблона - PullRequest
0 голосов
/ 09 мая 2019

Мне нужно иметь вложенную шаблонно-управляемую форму, и я использовал это руководство для этого: Угловой: вложенная шаблонная форма

К сожалению, как говорится в первом комментарии в статье, когда я пытался протестировать свой компонент, я обнаружил эту ошибку:

Error: StaticInjectorError(DynamicTestModule)[ControlContainer -> NgForm]: 
  StaticInjectorError(Platform: core)[ControlContainer -> NgForm]: 
    NullInjectorError: No provider for NgForm!

Кажется, что, поскольку дочернему компоненту нужно использовать существующую ngForm from, он является родительским, его нельзя протестировать на собственном.

stackblitz показывает то, что я пытаюсь сказать. AddressComponent является дочерним, а AppComponent - родительским.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 09 мая 2019

Поскольку для вашего AddressComponent требуется существующая NgForm, вам необходимо предоставить ее как часть вашей тестовой установки:

TestBed.configureTestingModule({
   imports: [FormsModule],
   declarations: [AppComponent, AddressComponent, HelloComponent],
   providers: [
     { provide: NgForm, useValue: new NgForm([], []) }
   ]
});

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

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