В моем html
(Angular
form
) у меня есть поле, и значение в этом поле должно быть проверено с использованием пользовательского метода
<input type="text" id="username" class="form-control" placeholder="username" formControlName="userName" [ngClass]="validateField('userName')" required
>
Я хочу написать пример модульного теста, который должен проверять, что метод validateField
вызывается при изменении значения поля.Я написал следующий тестовый пример, но я получаю сообщение об ошибке при вызове метода.
fit('it should validate that the data in username and password field has correct format',()=>{
let navComponent = component;
let helperService = TestBed.get(HelperService);
spyOn(helperService,'validateField');
let formControls = navComponent.loginForm.controls;
let email = 'test@test.com';
let password = 'testpassword';
formControls['userName'].setValue(email);
fixture.detectChanges();
expect(helperService.validateField).toHaveBeenCalledWith(navComponent.loginForm,'userName');
formControls['password'].setValue(password);
fixture.detectChanges();
expect(helperService.validateField).toHaveBeenCalledWith(navComponent.loginForm,'password');
});
Ошибка
Ожидается, что шпион validateField будет вызван с [FormGroup ({validator: null, asyncValidator: null, _... Объект ({userName: 'test@test.com', пароль: ''}), ошибки: null}), 'userName'], но он никогда не вызывался.
Как проверить, что метод вызывается?