FormBuilder: значение FormGroup не обновляется, когда я устанавливаю значение через fixture.nativeElement в моем тесте - PullRequest
0 голосов
/ 24 октября 2019

Я хочу заполнить форму через fixture.nativeElement, отправить форму и проверить код в функции onSubmit. Проблема в том, что значения FormGroup не обновляются соответственно.

Вот форма:

<form [formGroup]="formGroup" (submit)="doSignIn()">
     <div class="row">
        <label for="u">Email</label>
        <input id="u" formControlName="u" type="text" autofocus required  minlength="2"/>
     </div>
     <div class="row">
        <label for="p">Password</label>
        <input id="p" formControlName="p" type="password" required minlength="8" />
     </div>
     <div class="row">
        <button type="submit">SUBMIT</button>
     </div>
  </form>

Вот код функции dpSignIn:

async doSignIn() {
      const result = await this.userService.doSignIn(this.formGroup.value);
}

А вот тестовый костюм:

it('#doSignIn should attempt to login user', fakeAsync( async () => {
      signInComponent.ngOnInit();      userServiceSpy.doSignIn.and.returnValue(Promise.resolve({});
      let element = fixture.nativeElement;
      element.querySelector('#u').value = 'user';
      element.querySelector('#u').dispatchEvent(new Event('input'));
      element.querySelector('#p').value = 'expectedPassword';
      element.querySelector('#p').dispatchEvent(new Event('input'));
      fixture.detectChanges();
      element.querySelector('button[type="submit"]').click();
      fixture.detectChanges();
      fixture.debugElement.query(By.css('form')).triggerEventHandler('submit', null);
      expect(userServiceSpy.doSignIn).toHaveBeenCalledWith({u: 'user', p: 'password'});
      expect(userServiceSpy.doSignIn.calls.count()).toBe(1, 'spy method was called once');
   }));

Я ожидаю, что случай с toHaveBeenCalledWith({u: 'user', p: 'password'}) проходит вместо меня, я получаю ошибку Expected spy userService.doSignIn to have been called with [ Object({ u: 'user', p: 'password' }) ] but actual calls were [ Object({ u: '', p: '' }) ],

Ps Угловая версия составляет 8.

...