Unit тестирование – изолированное тестирование методов класса. Проверяем работу метода, передавая на вход различные комбинации параметров, и сравниваем полученный результат с ожидаемым.
Интеграционное тестирование — тестирование связки нескольких компонентов. С этого этапа мы начинаем тестировать не просто методы класса, но и их привязку к html, т.е. кликаем на элементы внутри компонента. В нотации Angular часто встречается Shallow testing, что по сути и является интеграционным тестированием.
E2E (end-to-end) тестирование — способ тестирования приложения полностью, чтобы решить проблемы unit-тестов. При этом подходе мы пишем тестовые сценарии для полностью отрендеренного приложения, т.е. все компоненты и сервисы собраны воедино, и мы воспроизводим действия пользователя.
Code coverage — это показатель, который показывает, какая часть кода была протестирована. Чем выше показатель, тем лучше. Но не стоит забывать, что показатель code coverage не является показателем качества кода. Например, если мы тестируем метод, который просто возвращает значение, то покрытие будет 100%, но это не означает, что код написан хорошо.
В тестировании Angular, spy object - это инструмент Jasmine testing framework, который позволяет отслеживать поведение функций без их фактического выполнения. Такие объекты используются для проверки вызова функций, количества вызовов и переданных аргументов.
Источники: