Как проверить выбор модуля автозаполнения? - PullRequest
0 голосов
/ 27 июня 2019

Как программно вызвать выбор параметра из списка автозаполнения матов в модульном тесте?

Я пытаюсь написать модульные тесты для компонента, включающего автозаполнение mat. Компонент несколько сложен с использованием ngModel, displayWith, ... поэтому я хотел бы программно вызвать выбор параметра из списка mat-autocomplete и проверить эффекты, которые это вызывает.

Что-то вроде этого будет тем, что я ищу (к сожалению, API имеет *1006*, а не имеет такой метод):

const autocompleteComponent = fixture.debugElement.query(By.css('mat-autocomplete')).componentInstance as MatAutocomplete;
const selectedOptionIndex = 0;
autocompleteComponent.selectOption(selectedOptionIndex);

Как я мог достичь чего-то подобного?

1 Ответ

1 голос
/ 27 июня 2019
Команда

Angular Material уже проверила событие @Output() optionSelected, поэтому в вашем случае достаточно протестировать только обработчик этого события.

Но, если вам действительно нужно это сделать, вы можете добиться этого, как команда Angular Material сделала это в своих юнит-тестах:

const options = overlayContainerElement.querySelectorAll('mat-option') as NodeListOf<HTMLElement>;
options[1].click();
fixture.detectChanges();

Подробнее здесь , строка 615 , юнит-тест: 'should update control value when option is selected with option value'.

...