Prog Academy
RU UA

Курс за підпискою

Тестування JavaScript: unit-тести, TDD і моки

Пишіть тести, які ловлять справжні помилки, — і код, якому можна довіряти

  • 9 модулів
  • 25+ практичних завдань
  • Автоматична перевірка
  • Українською

Отримати доступ до курсу

Курс за підпискою · Навчання у власному темпі

Про курс

Що це за курс?

Курс для тих, хто вже пише на JavaScript і хоче перестати перевіряти програму вручну після кожної зміни. Ви навчитеся писати автоматичні тести вбудованими інструментами Node.js — node:test і node:assert, — підбирати граничні випадки, працювати за TDD, підміняти залежності заглушками, шпигунами й фейковими таймерами та відрізняти тест, який справді захищає код, від тесту, який лише «зеленіє».

Аудиторія

Для кого цей курс?

  • Перевіряєте код вручну

    Напишете автоматичні тести вбудованими node:test і node:assert, які повторюватимуть перевірки за вас.

  • Тести «зеленіють», а баги проходять

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

  • Код залежить від мережі й таймерів

    Підмінятимете залежності заглушками, шпигунами й mock.fn, а час — фейковими таймерами, щоб тести були швидкими й стабільними.

Спершу потрібна підготовка

Курс спирається на знання, позначені нижче як обов’язкові.

Потрібно знати

  • Курс «Основи програмування на JavaScript» — функції, масиви, об'єкти, методи масивів, try/catch.

    Детальніше
    • Як підключати модуль через require, пояснено в першому розділі.
    • Для розділів про асинхронний код стане в пригоді курс «Просунутий JavaScript» (Promise, async/await), але потрібний мінімум ми нагадаємо.
    • Код виконується у вбудованому редакторі; браузерні й end-to-end тести (Cypress, Playwright) у курс не входять.

Якщо цих знань ще немає — пройдіть курси за порядком:

  1. З нуля
  2. Обов’язково Основи програмування на JavaScript
  3. Бажано Просунутий JavaScript
  4. Цей курс Тестування JavaScript: unit-тести, TDD і моки

Результат

Що ви навчитеся робити

писати перевірки assert.equal, deepEqual, throws, rejects і знати, коли яку

організовувати тести через test, describe і хуки, тестувати асинхронний код

знаходити граничні випадки й класи еквівалентності, писати табличні тести

працювати в циклі red → green → refactor

використовувати заглушки, шпигуни, фейки й mock.fn / mock.method

тестувати код із таймерами й датами через фейковий час

проєктувати код так, щоб його було легко тестувати (впровадження залежностей)

оцінювати якість тестів: покриття, мутації, крихкі тести

Формат

Як влаштоване навчання?

У більшості завдань ви пишете тести до готового коду. Перевірка запускає ваші тести не лише на правильній реалізації, а й на прихованих версіях із типовими помилками: тест зараховано, якщо він проходить на правильному коді й падає на кожній версії з помилкою. Так само працює мутаційне тестування в реальних командах. В інших завданнях — навпаки: тести дано, і ви пишете код, щоб вони пройшли, як у справжньому TDD.

  • Теорія

    17 уроків з прикладами

  • Практика в браузері

    25+ завдань з автоматичною перевіркою

  • Тести

    9 тестів для самоперевірки

  • Власний темп

    Онлайн на my.prog.academy, без встановлення програм

AI-помічник

AI-помічник поруч під час навчання

На сторінках курсу, уроків і завдань є кнопка «Запитати AI». Помічник знає матеріали саме цього курсу й урок, на якому ви зараз, тому відповідає по темі й показує, у яких уроках про це йдеться.

  • Пояснить інакше

    Не зрозуміли урок з першого разу — попросіть пояснити простіше або дати ще один приклад.

  • Допоможе із завданням

    Застрягли — підкаже, з чого почати, і допоможе знайти помилку у вашому рішенні. Готового рішення не дає.

  • Знайде потрібну тему

    Запитайте, де пояснювали поняття, — і отримаєте посилання на потрібні уроки курсу.

  • Продовжить розмову

    Уточнюйте без повторів: помічник пам’ятає розмову, а нещодавні розмови курсу зберігаються.

Входить у кожен тариф оплаченої підписки — Basic і Premium. У Premium ліміти використання AI-помічника вищі — ним можна користуватися активніше. Це помічник у навчанні, а не генератор готових відповідей: він пояснює й підказує, а завдання ви розв’язуєте самі.

Програма

Програма курсу

9 модулів, 25+ практичних завдань з автоматичною перевіркою і 9 тестів. Відкрийте модуль, щоб побачити всі теми.

Розділ 1 — Навіщо тести і перші перевірки 2 уроки · 3 практики · 1 тест

Що таке автоматичний тест і що він захищає, модулі require, node:assert/strict: equal, deepEqual, ok, throws.

  • Теорія Навіщо програмісту автоматичні тести
  • Теорія Модулі та node:assert: перші перевірки
  • Практика Тести для splitInteger
  • Практика Виправити непрацюючі перевірки
  • Практика Перевірка помилок у parseAge
  • Тест Навіщо тести і перші перевірки
Розділ 2 — node:test: структура тестів, хуки й асинхронні тести 2 уроки · 3 практики · 1 тест

test і describe, хуки beforeEach/afterEach і before/after, skip і todo, звіт про запуск; Promise і async/await у тестах, assert.rejects.

  • Теорія Тести, групи й хуки в node:test
  • Теорія Асинхронні тести: Promise, await і assert.rejects
  • Практика Кошик покупок і beforeEach
  • Практика Асинхронний loadProfile
  • Практика Групи тестів для бібліотеки
  • Тест Node:test і асинхронні тести
Розділ 3 — Граничні випадки, класи еквівалентності й табличні тести 2 уроки · 3 практики · 1 тест

Як вибирати вхідні дані для тестів: класи еквівалентності, граничні значення, порожнє/одне/багато, особливі значення; табличні тести й очікування, записані вручну.

  • Теорія Класи еквівалентності й граничні значення
  • Теорія Табличні тести й чесні очікування
  • Практика Межі тарифів доставки
  • Практика Правила пароля
  • Практика Дні в місяці
  • Тест Граничні випадки й табличні тести
Розділ 4 — TDD: спершу тест 2 уроки · 4 практики · 1 тест

Цикл red → green → refactor, найменший крок, «fake it», тріангуляція, рефакторинг під зеленими тестами, тест як виконувана специфікація; коли TDD допомагає, а коли ні.

  • Теорія Цикл red → green → refactor
  • Теорія Тест як специфікація: рефакторинг і межі TDD
  • Практика Практика TDD: ізограма
  • Практика Практика TDD: решта монетами
  • Практика Практика TDD: відновити повні імена
  • Практика Практика TDD: калькулятор заправки
  • Тест TDD
Розділ 5 — Тестові двійники: заглушки, шпигуни, фейки 2 уроки · 3 практики · 1 тест

Навіщо ізолювати код від мережі, пошти й платежів; stub, spy, fake і mock; mock.fn, mock.method і перевірка викликів у node:test; залежності як параметри.

  • Теорія Навіщо підміняти залежності: stub, spy, fake, mock
  • Теорія mock.fn і mock.method у node:test
  • Практика Шпигун для нагадувань про рахунки
  • Практика Заглушка платіжного сервісу
  • Практика Практика TDD: власна фабрика шпигунів
  • Тест Тестові двійники
Розділ 6 — Час і асинхронність: фейкові таймери 2 уроки · 3 практики · 1 тест

Чому справжній час робить тести повільними й нестабільними, mock.timers: enable, tick, runAll, setTime, керування Date, таймери разом із промісами, впровадження годинника.

  • Теорія Фейкові таймери: тест, який не чекає
  • Теорія Таймери разом із промісами і впровадження годинника
  • Практика Тести для debounce
  • Практика Термін дії токена
  • Практика Повтор із паузою, що зростає
  • Тест Фейкові таймери
Розділ 7 — Тестований дизайн: залежності та фейки 2 уроки · 3 практики · 1 тест

Жорстко зашиті залежності проти впровадження залежностей, фабрики з колабораторами, фейковий репозиторій у пам'яті, заглушки для fetch, шпигуни лише для взаємодій, граничні й помилкові шляхи.

  • Теорія Залежності: зашиті всередину чи передані ззовні
  • Теорія Фейк, заглушка, шпигун: що підставити і що перевіряти
  • Практика Реєстрація з фейковим репозиторієм
  • Практика Заглушка для погодного API
  • Практика Сума замовлення з курсом валют
  • Тест Тестований дизайн
Розділ 8 — Якість тестів: покриття, мутації, крихкі тести 2 уроки · 3 практики · 1 тест

Покриття рядків і гілок, мутаційне тестування, крихкі й нестабільні тести, поведінка замість реалізації, хороші назви тестів.

  • Теорія Покриття коду і мутаційне тестування
  • Теорія Крихкі й нестабільні тести
  • Практика Переписати крихкі тести
  • Практика Вбити всіх мутантів
  • Практика 100 % рядків — ще не все
  • Тест Якість тестів
Розділ 9 — Підсумковий проєкт 1 урок · 3 практики · 1 тест

Тестування цілого модуля: список поведінок, вибір випадків, двійники, структура describe, перевірка, що кожне правило покрито. Склад, бібліотека з годинником, обмежувач запитів за TDD.

  • Теорія Як протестувати цілий модуль
  • Практика Проєкт: склад
  • Практика Проєкт: бібліотека з годинником
  • Практика Проєкт за TDD: обмежувач запитів
  • Тест Підсумковий тест курсу

Стек

Які технології використовуються?

  • JavaScript (Node.js)

Код пишете й запускаєте в браузері на платформі — встановлювати нічого не потрібно.

Доступ

Як отримати доступ?

  1. Залиште заявку

    Заповніть коротку форму на цій сторінці.

  2. Завершіть реєстрацію в Telegram

    Після заявки перейдіть у Telegram-бот Prog Academy — він надішле подальші інструкції щодо доступу.

  3. Навчайтеся на платформі

    Уроки, практика й тести — на my.prog.academy, у зручному для вас темпі.

Контакт

Почніть навчання на платформі

Залиште контакти — надішлемо деталі доступу до курсу «Тестування JavaScript: unit-тести, TDD і моки».

Інші курси за підпискою

Термінал Linux (bash)

Основи Linux

Командний рядок з нуля: файли, права, процеси, мережа, bash-скрипти і SSH — у терміналі навчальної Ubuntu.

13 модулів · 40+ практичних завдань

JavaScript (Node.js)

Як працює веб: від URL до HTTPS, API і безпеки

Шлях запиту від URL до готової сторінки: DNS, TCP, TLS, HTTP, кеш, cookies, API і захист вебзастосунків.

11 модулів · 30+ практичних завдань

Часті питання про курс

Що це за курс?

«Тестування JavaScript: unit-тести, TDD і моки» — онлайн-курс за підпискою на навчальній платформі Prog Academy. Пишіть тести, які ловлять справжні помилки, — і код, якому можна довіряти. Курс для тих, хто вже пише на JavaScript і хоче перестати перевіряти програму вручну після кожної зміни. Ви навчитеся писати автоматичні тести вбудованими інструментами Node.js — node:test і node:assert, — підбирати граничні випадки, працювати за TDD, підміняти залежності заглушками, шпигунами й фейковими таймерами та відрізняти тест, який справді захищає код, від тесту, який лише «зеленіє».

Для кого цей курс?

Курс для тих, хто вже пише на JavaScript і хоче перестати перевіряти програму вручну після кожної зміни.

Які знання потрібні перед стартом?

Потрібно: курс «Основи програмування на JavaScript» — функції, масиви, об'єкти, методи масивів, try/catch. Як підключати модуль через require, пояснено в першому розділі. Для розділів про асинхронний код стане в пригоді курс «Просунутий JavaScript» (Promise, async/await), але потрібний мінімум ми нагадаємо. Код виконується у вбудованому редакторі; браузерні й end-to-end тести (Cypress, Playwright) у курс не входять.

Які практичні завдання будуть?

У більшості завдань ви пишете тести до готового коду. Перевірка запускає ваші тести не лише на правильній реалізації, а й на прихованих версіях із типовими помилками: тест зараховано, якщо він проходить на правильному коді й падає на кожній версії з помилкою. Так само працює мутаційне тестування в реальних командах. В інших завданнях — навпаки: тести дано, і ви пишете код, щоб вони пройшли, як у справжньому TDD.

Які технології використовуються?

JavaScript (Node.js). Код пишете й запускаєте прямо в браузері на платформі — встановлювати нічого не потрібно.

Скільки модулів містить курс?

9 модулів: Навіщо тести і перші перевірки; node:test: структура тестів, хуки й асинхронні тести; Граничні випадки, класи еквівалентності й табличні тести; TDD: спершу тест; Тестові двійники: заглушки, шпигуни, фейки; Час і асинхронність: фейкові таймери; Тестований дизайн: залежності та фейки; Якість тестів: покриття, мутації, крихкі тести; Підсумковий проєкт. Практичних завдань з автоматичною перевіркою — 25+, тестів — 9.

Як отримати доступ?

Залиште заявку на цій сторінці й завершіть реєстрацію в Telegram-боті Prog Academy — там ви отримаєте подальші інструкції щодо доступу. Навчання проходить на платформі my.prog.academy у власному темпі.

Чи входить курс у підписку?

Так. Курс входить у підписку на платформі Prog Academy: доступ до всіх курсів за підпискою; ai-помічник з навчання в кожному курсі; усі уроки, домашні завдання та автоматична перевірка; нові курси за підпискою додаються автоматично.

Не знайшли відповідь?

Залиште запитання — підкажемо, чи підходить вам курс і з чого краще почати.