Модульный тестовый переключатель углового корпуса FormControl

#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});