Модульное тестирование (?) Углового 6-компонентного с TestBed - PullRequest
0 голосов
/ 22 мая 2018

При использовании TestBed вы действительно проводите модульное тестирование компонента или проводите интеграционные тесты?

Создание прибора (TestBed.createComponent(AppComponent)) и вызов fixture.detectChanges() автоматически вызывают ngOnInit.Если вы хотите протестировать другой метод, вы сейчас тестируете несколько модулей.

Это приводит к другому вопросу: должны ли вы тестировать модули или тестировать действия пользователя?Например, если вы тестируете метод setDimensions, или если вы проверяете, что когда пользователь нажимает на определенную кнопку, элемент, помимо прочего, имеет соответствующие размеры.

Я думаю, первый способ тестированиябудет ближе к «модульному тестированию», но тогда вам все равно придется иметь дело с методами жизненного цикла вызываемого компонента.Это заставляет меня думать, что нет способа выполнить модульные тесты компонента с использованием TestBed.Заглушка всех методов жизненного цикла кажется нелепой.

Какой бы способ вы ни решили проверить, вам также следует проверить DOM, не так ли?Тогда вы не тестируете изолированно, включая DOM API.

Ответы [ 2 ]

0 голосов
/ 24 мая 2018

Вот дополнительная информация, полученная со страницы Test Driven Development Wikipedia .

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

Так что модульное тестирование не обязательно проверяет наименьшую возможную единицу.

Разработка на основе тестирования делаетне проводить достаточного тестирования в ситуациях, когда требуются полные функциональные тесты для определения успеха или неудачи из-за широкого использования модульных тестов. [21]Примерами этого являются пользовательские интерфейсы, программы, которые работают с базами данных, и некоторые, которые зависят от конкретных сетевых конфигураций.TDD рекомендует разработчикам помещать минимальный объем кода в такие модули и максимизировать логику, которая есть в коде библиотеки для тестирования, используя подделки и насмешки для представления внешнего мира. [22]

Пользовательский интерфейс тестируемыймодульными тестами до определенной точки уменьшения отдачи, то есть когда полезны функциональные тесты / тесты e2e.

Модульные тесты названы так, потому что каждый из них тестирует одну единицу кода.Сложный модуль может иметь тысячу модульных тестов, а простой модуль может иметь только десять.Модульные тесты, используемые для TDD, никогда не должны пересекать границы процесса в программе, не говоря уже о сетевых подключениях.Это приводит к задержкам, из-за которых тесты запускаются медленно и не позволяют разработчикам запускать весь пакет.Введение зависимостей от внешних модулей или данных также превращает модульные тесты в интеграционные тесты.Если один модуль ведет себя неправильно в цепочке взаимосвязанных модулей, не так сразу понятно, где искать причину сбоя.

Думаю, я бы сейчас определил интеграционные тесты как тесты, которые также проверяют внешниечасти приложения, такие как другие процессы, такие как БД или серверный API.

0 голосов
/ 22 мая 2018

Как указано в Angular docs :

Компонент, в отличие от всех других частей приложения Angular, объединяет шаблон HTML и класс TypeScript.Компонент - это шаблон и класс, работающие вместе.и чтобы адекватно протестировать компонент, вы должны проверить, что они работают вместе, как и предполагалось.

Такие тесты требуют создания хост-элемента компонента в DOM браузера, как это делает Angular, и исследуют взаимодействие класса компонента с DOM какописывается его шаблоном.

Angular TestBed облегчает этот вид тестирования, как вы увидите в следующих разделах.Но во многих случаях тестирование одного класса компонентов без участия DOM может проверить большую часть поведения компонента более простым и очевидным способом.

Итак, здесь модуль является компонентом ( шаблон и класс, работающие вместе ).И вы должны попытаться протестировать компонент, заглушив входные данные и зависимости.

Полагаю, если вы прочитаете документацию по тестированию один раз сверху вниз, у вас есть ответы на ваши вопросы.

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