Я хочу заполнить форму через 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.