Я пытаюсь протестировать функцию, которая инициируется нажатием кнопки
Если значение кнопки равно «Да», применить пользовательский валидатор к formGroup
Валидатору требуется параметркоторая является службой "this.stateService", которая возвращает номер "0" для этого теста.
Фактическая функция:
onSelected(): void {
const myFormGroup: AbstractControl = this.form.controls.fGroup;
if (this.form.get('button').value === 'Yes') {
myFormGroup.validator = myValidation.requireCheckboxesToBeChecked(this.stateService);
} else {
myFormGroup.setValidators(null);
}
myFormGroup.updateValueAndValidity();
}
В файле валидатора:
static requireCheckboxesToBeChecked(stateService: StateService): ValidatorFn {
return function validate (formGroup: FormGroup): { [key: string]: boolean } | null {
const checkedCount = stateService.currentCheckedCount();
if (checkedCount === 0) {
return {
'isNotChecked' : true
};
}
return null;
};
}
Функция теста:
import { myValidation } from '@app/shared/validators/modification.validator';
const mockStateService = jasmine.createSpyObj('StateService',
[ 'getCategoryState',
'getCheckedCount'
]);
it('should add validation to my form group when value is Yes', () => {
const vehicleModificationsFormGroup = component.form.controls['vehicleModifications'];
component.form.get('button').setValue('Yes');
component.onSelected();
myFormGroup.validator = myValidation.requireCheckboxesToBeChecked(mockStateService);
expect(mockStateService.currentCheckedCount).toEqual(0);
expect(myFormGroup.validator.length).toBe(1);
});
Я получаю сообщение "stateService.currentCheckedCount is not function", которое находится в файле валидатора