Angular IDPStrong Junior
Модулі / Юніт-тести / Навіщо тести саме тут
🔥 0

Модуль 8 · урок 1 з 9

Навіщо тести саме тут

У таблиці ліда обсяг названий точно: 2–3 тести дата-сервісів і 2 тести на валідацію, guards або пайпи. Разом пʼять. Це найдешевша ціль усього плану за співвідношенням зусиль і враження — і саме тому її не варто лишати на кінець.

Що насправді перевіряє лід

Не покриття й не кількість. Пʼять тестів показують три речі, які важко продемонструвати інакше:

  • Що ти вмієш зафіксувати поведінку кодом. Не «у мене працює», а «ось перевірка, запусти сам».
  • Що твій код узагалі тестований. Якщо логіка розмазана по компонентах і зашита в сервіси через new, написати тест неможливо — і це видно одразу.
  • Що ти розумієш, що саме варто перевіряти. Тест на геттер каже про людину більше, ніж відсутність тестів.
Хороша новина

Найважчу частину ти вже зробив. Протягом плану логіка навмисно виносилась у чисті функції: applyState з модуля 5, compareBy звідти ж, валідатори з модуля 6, pickState з модуля 7. Кожна з них тестується трьома рядками без Angular взагалі. Лишилось написати ці рядки.

Karma, Jasmine і що з ними сьогодні

Що цеРоль
JasmineМова тестів: describe, it, expect, спаї
KarmaЗапускач: піднімає браузер, збирає результати
TestBedЧастина Angular: створює тестове середовище з DI

Важлива деталь про сучасний стан: Karma офіційно позначено застарілим, і Angular CLI рухається до Vitest як запускача. Але мова тестів лишається та сама — describe, it, expect виглядають однаково. Тобто те, що ти вивчиш тут, не застаріє: зміниться інструмент запуску, а не спосіб писати тести.

ng test                                  # запустити з переглядом змін
ng test --watch=false                    # один прогін — так це працює в CI
ng test --code-coverage                  # із покриттям
ng test --include='**/task-store.spec.ts' # лише один файл

Піраміда, про яку варто знати

E2E одиниці · повільні · крихкі компоненти й сервіси десятки · середні чисті функції сотні · миттєві Що нижче — то дешевше писати, швидше виконувати й простіше підтримувати.
Основа піраміди — тести чистих функцій. Саме тому логіку й виносять із компонентів: не заради краси, а щоб її можна було дешево перевіряти.

Що саме напишемо

Що тестуємоУрокСкладність
1Пайп форматування4Найпростіший — з нього й почнемо
2Функціональний guard4Проста, якщо логіка чиста
3Стор: емісії й мутації стану5Головний тест, найцінніший
4Синхронний валідатор6Проста
5Асинхронний валідатор6Найцікавіша: тут потрібен fakeAsync
Що сказати, якщо спитають про покриття

«Покриття я не ганявся: воно легко накручується тестами, які нічого не перевіряють. Натомість покрив те, де логіка справді є — фільтрацію й сортування списку, стан стору й валідатори. Це чисті функції, тому тести короткі й не ламаються від рефакторингу верстки.»

≈ 25 хв · +25 XP за урок