Я очень новичок в тестировании Angular, и я хотел бы узнать о нем больше. Я написал следующую неправильную форму (здесь ошибка в том, что ник должен принимать только строку из 10 цифр, а я не написал для нее никакой схемы)
<form (submit)="onLoginSubmit()">
<p>NIC number</p>
<input [(ngModel)]="f_nic" name="nic" type="text" placeholder="NIC number" required>
<p>Password</p>
<input [(ngModel)]="f_password" name="password" type="password" placeholder="Password" required>
<input type="submit" value="Login" name="loginbutton">
<flash-messages></flash-messages>
</form>
Я хочу показать, что форма остается в силе, даже если я введу неправильный ник.
Вот моя попытка
it('form invalid on wrong data types', fakeAsync(() => {
const username = 'username';
const password = 'password';
const usernameField = de.query(By.css('input[name=nic]')).nativeElement;
const passwordField = de.query(By.css('input[name=password]')).nativeElement;
const form = de.query(By.css('form')).nativeElement;
fixture.detectChanges();
usernameField.focus();
passwordField.focus();
fixture.detectChanges();
usernameField.value = username;
passwordField.value = password;
usernameField.dispatchEvent(new Event('input'));
passwordField.dispatchEvent(new Event('input'));
form.dispatchEvent(new Event('click'));
tick();
fixture.detectChanges();
console.log(component);
expect(usernameField.value).toEqual(username);
expect(component.f_nic).toEqual(username); // ERROR
expect(form.classList.contains('ng-invalid')).toBeTruthy(); //ERROR
}));
Однако следующий код возвращает ошибку в обеих точках, говоря, что ожидание undefined будет «username», а второе - ожидание false, чтобы быть правдивым.
Я что-то здесь упускаю с тиковыми событиями или отправкой событий?