Ссылочная переменная шаблона тестирования в угловых - PullRequest
0 голосов
/ 14 октября 2018

У меня есть следующий код:

<input class="txt-port-id" id="portId"
     [value]="portIdFund1"
     maxlength="4"
     size="4"
     (keyup)="fundPortIdChanged(fund1PortId.value, 'fund1')"
     #fund1Port>

В угловых документах написано передача-событие-это-сомнительная практика , таким образом, передавая шаблонную переменную-ссылку.Как мы пишем Unit Test в Жасмин для того же самого?

1 Ответ

0 голосов
/ 20 октября 2018

Что вы можете сделать, это использовать dispatchEvent следующим образом:

it('simple input test', fakeAsync(() => {
      const fundChangedSpy = spyOn(component, 'fundPortIdChanged').and.callThrough();
      const portIDInput: HTMLInputElement = fixture.debugElement.nativeElement.querySelector('#portId');
      expect(portIDInput.value).toEqual('');
      portIDInput.dispatchEvent(new Event('keyup'));
      fixture.detectChanges();
      tick(50);
      expect(portIDInput.value).toEqual('fund1');
      expect(fundChangedSpy).toHaveBeenCalledTimes(1);
}));

Однако, насколько я понимаю, более рекомендуется использовать Реактивные формы вместо Формы на основе шаблонов с модульным тестированием.

Реактивные формы также обеспечивают прямой путь к тестированию, потому что вы уверены, что ваши данные непротиворечивы и предсказуемы при запросе.Любые потребители потоков имеют доступ для безопасного управления этими данными.

Вот stackblitz с тестом.

...