Jasmine-Tests - Получить элементы внутри <ng-template> (Angular) - PullRequest
0 голосов
/ 02 мая 2018

Я бы хотел протестировать элементы HTML внутри ng-тамплата.

<ng-template>
  <button class="create"></button>
</ng-template>

Жасмин Тест:

fixture = TestBed.createComponent(SomeComponent);
const htmlElement: HTMLElement = fixture.nativeElement;
// Does not work:
const p = htmlElement.querySelector('.create');

Как я могу получить элемент html внутри ng-шаблона? Если я размещу кнопку за пределами тега ng-template, она будет работать. Я думаю, это как-то связано с теневым домом.

Версии: Жасмин 2.8.0; Угловой 5.2.9

1 Ответ

0 голосов
/ 23 мая 2018

Я забыл позвонить fixture.detectChanges();. Только когда вы вызываете этот метод, компонент полностью отображается в DOM (включая shadow-DOM-elements). Работает следующий код:

fixture = TestBed.createComponent(SomeComponent);
fixture.detectChanges();
const htmlElement: HTMLElement = fixture.nativeElement;
const p = htmlElement.querySelector('.create');

Подробнее см. https://angular.io/guide/testing#detectchanges.

...