#angular #unit-testing
Вопрос:
Я пытаюсь протестировать какую-то функцию с помощью модульного теста, что-то вроде этого
public setFormControlsValue(formControl: AbstractControl, buildingType: buildingTypeOption, value?: string): void {
switch (buildingType) {
case buildingTypeOption.twoToFourFacades:
case buildingTypeOption.additionalConstruction:
case buildingTypeOption.industrialBuilding:
formControl.setValidators([Validators.required]);
formControl.updateValueAndValidity();
formControl.enable({ onlySelf: true });
break;
case buildingTypeOption.lightConstruction:
debugger
formControl.setValidators(null);
formControl.setValue(null);
formControl.clearValidators();
formControl.updateValueAndValidity();
formControl.disable({ onlySelf: true });
break;
case null:
formControl.setValidators([Validators.required]);
formControl.setValue(null);
formControl.updateValueAndValidity();
formControl.enable({ onlySelf: true });
break;
default:
formControl.setValue(value);
formControl.updateValueAndValidity();
formControl.disable({ onlySelf: true });
break;
}
}
И в модульном тесте что-то вроде этого
describe('has called setFormControlsValue ', () => {
let formControlsValue = {};
let formBuilder = new FormBuilder();
let formControls: AbstractControl;
beforeEach(() => {
formControlsValue = {
destinationEquipment: destinationEquipment.nonEquippedDestination
};
formControls = formBuilder.group(formControlsValue);
});
it('formControls should be twoToFourFacades and enabled', () => {
// GIVEN
// WHEN
service.setFormControlsValue(formControls, buildingTypeOption.twoToFourFacades);
// THEN
expect(formControls.disabled).toBeFalsy();
});
});
Проблема, с которой я столкнулся, заключается в том, как протестировать эту строку кода FormControl.setValidators([Валидаторы.требуются]); или, может быть, я не иду в правильном направлении настройки теста?
Ответ №1:
как протестировать эту строку кода FormControl.setValidators([Требуются валидаторы]);
В подготовленных условиях выполните соответствующий код, а затем проверьте, является ли FormControl недействительным и имеет ли он правильную {required:true}
ошибку.
expectThat(formControl.invalid).toBeTrue();
expectThat(formControl.errors).toEqual({required:true});