Жасминовый тест, вызывать ли mat-select генерировать событие selectionChange? - PullRequest
0 голосов
/ 02 мая 2018

В моем приложении Angular5 у меня есть выбор циновки для списка дат. Когда пользователь выбирает новую дату из опций, мой процессор selectionChange запускает запрос данных.

Я пытаюсь написать тест Жасмин, чтобы симулировать взаимодействие с пользователем, чтобы убедиться, что обработка выполнена правильно. Я не знаю, как заставить mat-select выбрать значение и выдать selectionChange, как если бы пользователь сделал выбор.

Я видел проблему в Angular Material2 GitHub (выпуск 5082), которая ссылается на тесты для mat-select - я пытался создать событие нажатия клавиши со стрелкой вниз, чтобы инициировать выбор следующего элемента:

let selCtrl = fixture.nativeElement.querySelector('mat-select');
selCtrl.dispatchEvent(new KeyboardEvent({key: 'ArrowDown', code: 'ArrowDown'});

Однако, похоже, что это не работает - при проверке созданного мною события и кода выбора коврика выясняется, что keyCode не создается, и это требуется для функции выбора метки.

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

Какие-либо предложения о том, как вызвать изменения выбора циновки из теста Жасмин?

1 Ответ

0 голосов
/ 14 марта 2019

Что я сделал, чтобы вызвать событие (selectionChange) на mat-select, это сделать следующим образом:

   fixture.debugElement.query(By.css('mat-select')).triggerEventHandler('selectionChange', { value: { id: 1 } });

Это работает, функция захвата selectionChange, которую я использую, получает объект 'value'. SelectionChange немного отличается, и событие $, которое вы проходите, имеет все, поэтому вам нужно $event.value в selectionChange=function($event.value);

Надеюсь, это ответит на ваш вопрос.

...