Угловое модульное тестирование: стоит ли этот код модульного тестирования? - PullRequest
1 голос
/ 20 июня 2019

Я только начал модульное тестирование в угловых.Мне трудно понять, что должно быть включено в модульные тесты в приложении.Должен ли я тестировать приведенный ниже код?

Если я это сделаю, я по сути буду передавать действительное значение mode и проверять, были ли правильные значения для различных свойств defaultProperties переданы this.propertiesSource.Разве это не похоже на написание одного и того же кода снова и снова?И это только один пример, приложение полно таких экземпляров.

Если я не проверю такие вещи, то, вероятно, мой охват кода будет незначительным.

Вот пример кода из компонента:

 mode: string;
  defaultProperties = {
    editable: this.editable,
    showToolbar: this.showToolbar,
    viewMode: this.viewMode,
    editMode: this.editMode,
    showPopup: this.showPopup,
    formSavedClicked: this.formSavedClicked,
    cancelClicked: this.cancelClicked,
    refresh: this.refresh,
  };
  private propertiesSource = new BehaviorSubject(this.defaultProperties);

Метод для тестирования:

 setGridMode(mode) {
    this.mode = mode;
    if (mode === "edit") {
      this.propertiesSource.next({
        editable: true,
        showToolbar: true,
        viewMode: false,
        editMode: true,
        showPopup: false,
        formSavedClicked: this.formSavedClicked,
        cancelClicked: this.cancelClicked,
        refresh: false,

      });
    } else if (mode == "save") {
      this.propertiesSource.next({
        editable: false,
        showToolbar: false,
        viewMode: true,
        editMode: false,
        showPopup: false,
        formSavedClicked: this.formSavedClicked,
        cancelClicked: this.cancelClicked,
        refresh: true,
      })
      // more code..multiple if else block like above
    }  
   }

Ответы [ 2 ]

0 голосов
/ 22 июня 2019

Как указал Шашанк Вивек, похоже, что существует много избыточности.Может быть, некоторые общие функциональные возможности могут быть исключены.

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

Я предполагаю, что эти настройки предназначены для настройки поведения некоторой библиотеки виджетов или чего-то подобного.Конечно, вы можете написать тест, который проверяет, что для mode "edit" значение для refresh равно false.Этот тест основан на вашем предположении, что этот параметр приведет к определенному поведению соответствующего виджета.Но даже если ваше предположение неверно, модульный тест все равно пройдет, потому что он просто отражает ваше собственное неправильное понимание.

Чтобы проверить правильность этих настроек, вам, следовательно, придется выполнить тесты, где ваш кодинтегрирован с библиотекой виджетов, чтобы увидеть, что установка действительно приводит к ожидаемому эффекту - но это больше не является модульным тестированием.

0 голосов
/ 21 июня 2019

Хотя это может показаться несколько утомительным, но хорошо бы протестировать все, что вы можете.

Я бы проверил это по нескольким причинам:

  1. Вы можете проверить крайние случаи. Например, что вы делаете, если mode имеет значение null или является значением, для которого вы не запланировали. Вы должны быть в состоянии справиться с этим.
  2. Для будущих разработчиков. Если кто-то случайно придет и изменит одно из этих значений, ваши тесты не пройдут, и вы поймете, что что-то не так. Это заставит изменить тест, если они изменят значение. Таким образом, проверка того, что изменение действительно должно было произойти.

Если это может быть проверено, оно должно быть проверено.

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