Создание модульного теста для угловой директивы с использованием Karma

#angular #karma-jasmine

Вопрос:

Я новичок в модульном тестировании и хотел бы создать набор модульных тестов для директивы angular, который установит фокус формы на первое недопустимое поле. Может ли кто-нибудь предоставить мне модульный тест, и это поможет мне изучить Карму.

 import { Directive, HostListener, ElementRef } from '@angular/core';
@Directive({
  selector: '[focusInvalidInput]'
})
export class FocusFormDirective {
  constructor(private el: ElementRef) {}
  @HostListener('submit')
  onFormSubmit() {
    const invalidControl = this.el.nativeElement.querySelector('.ng-invalid');
    
    if (invalidControl) {
      invalidControl.focus();
    }
  }
}
 

Комментарии:

1. Что вы уже написали до сих пор?

Ответ №1:

Вы хотите использовать свой модульный тест для проверки входных данных пользователя?

В этом случае я не думаю, что модульные тесты являются хорошим решением (даже если использование директивы может быть хорошим). Модульные тесты часто используются с поддельными данными в потоке непрерывной интеграции (CI).

Вы должны использовать модульный тест для проверки надлежащего поведения вашей формы перед развертыванием решения — после изменений в вашем приложении. Даже если это не связано с вашей формой, чтобы убедиться, что вы ничего не сломали.

Модульное тестирование проводится разработчиками на этапе разработки (кодирования) приложения. Модульные тесты выделяют раздел кода и проверяют его правильность. Единицей может быть отдельная функция, метод, процедура, модуль или объект.

Определение Guru99

Смотрите этот ответ : Как и когда правильно использовать модульное тестирование

Комментарии:

1. Нет. Я хочу модульно протестировать функцию onFormSubmit()

2. О, в таком случае я не знаю, как вы могли бы связать onFormSubmit() свое приложение с остальной частью в тесте — цель модульного тестирования состоит в том, чтобы отделить ваш метод от остальной части кода, чтобы обрабатывать его индивидуально