Модульный тест для возврата if ();в функции - PullRequest
0 голосов
/ 02 апреля 2019

HTML:

<button [disabled]="isFormValid()"></button>

.ts:

isFormValid() {
    if (this.data.dataForm.valid && this.flag) {
      if (!!this.testData.data) {
       return !this.testData.data.dataForm.valid;
      } else {
        return true;
      }
    } else {
      return !this.data.dataForm.valid;
    }
  }

У меня был такой метод с вложенными условиями if и множественными операторами возврата. Я изучаю модульное тестирование, и какой подход лучше всего подходит для работы с этим методом в случае нескольких модульных тестов.

1 Ответ

0 голосов
/ 02 апреля 2019

Я считаю наиболее полезным рассматривать шаблон компонента и класс машинописи как одну единицу для тестирования.Таким образом, я свободен в рефакторинге и перемещаю вещи, не нарушая тесты и не получая ложных срабатываний в результатах тестов.

В вашем случае, чтобы протестировать его, я бы ввел функцию, которая возвращает дескриптор кнопки, которую вы хотите протестировать,как в:

function submitButton() {
    return fixture.debugElement.query(By.css('.some-class')).nativeElement
}

Таким образом, я мог бы создать несколько тестовых случаев, где я передаю значения в другие поля формы, вызываю submitButton.click() и проверяю, что действие было / не было выполнено.

При настройке значений формы (имитация пользовательского ввода) помните, что вам может потребоваться опубликовать события браузера input, чтобы Angular обновил форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...