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+ практических заданий

Кибербезопасность с ИИ: защита от современных атак и безопасная работа с искусственным интеллектом

Защита от современных атак для нетехнических специалистов: фишинг, пароли и MFA, инциденты, дипфейки и безопасная работа с ИИ.

12 модулей · 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-помощник по обучению в каждом курсе; все уроки, домашние задания и автоматическая проверка; новые курсы по подписке добавляются автоматически.

Не нашли ответ?

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