Основы Linux
Командная строка с нуля: файлы, права, процессы, сеть, bash-скрипты и SSH — в терминале учебной Ubuntu.
Курс по подписке
Пишите тесты, которые ловят настоящие ошибки, — и код, которому можно доверять
Получить доступ к курсу
Курс по подписке · Обучение в своём темпе
О курсе
Курс для тех, кто уже пишет на JavaScript и хочет перестать проверять программу вручную после каждого изменения. Вы научитесь писать автоматические тесты встроенными инструментами Node.js — node:test и node:assert, — подбирать граничные случаи, работать по TDD, подменять зависимости заглушками, шпионами и фейковыми таймерами и отличать тест, который действительно защищает код, от теста, который только «зеленеет».
Аудитория
Проверяете код вручную
Напишете автоматические тесты встроенными node:test и node:assert, которые будут повторять проверки за вас.
Тесты «зеленеют», а баги проходят
Научитесь подбирать граничные случаи и писать тесты, которые падают на скрытых версиях кода с типичными ошибками.
Код зависит от сети и таймеров
Будете подменять зависимости заглушками, шпионами и mock.fn, а время — фейковыми таймерами, чтобы тесты были быстрыми и стабильными.
Курс опирается на знания, отмеченные ниже как обязательные.
Нужно знать
Курс «Основы программирования на JavaScript» — функции, массивы, объекты, методы массивов, try/catch.
require, объяснено в первом разделе.async/await), но нужный минимум мы напомним.Если этих знаний ещё нет — пройдите курсы по порядку:
Результат
писать проверки assert.equal, deepEqual, throws, rejects и знать, когда какую
организовывать тесты через test, describe и хуки, тестировать асинхронный код
находить граничные случаи и классы эквивалентности, писать табличные тесты
работать в цикле red → green → refactor
использовать заглушки, шпионов, фейки и mock.fn / mock.method
тестировать код с таймерами и датами через фейковое время
проектировать код так, чтобы его было легко тестировать (внедрение зависимостей)
оценивать качество тестов: покрытие, мутации, хрупкие тесты
Формат
В большинстве заданий вы пишете тесты к готовому коду. Проверка запускает ваши тесты не только на правильной реализации, но и на скрытых версиях с типичными ошибками: тест засчитан, если он проходит на правильном коде и падает на каждой версии с ошибкой. Так же работает мутационное тестирование в реальных командах. В других заданиях — наоборот: тесты даны, и вы пишете код, чтобы они прошли, как в настоящем TDD.
17 уроков с примерами
25+ заданий с автоматической проверкой
9 тестов для самопроверки
Онлайн на my.prog.academy, без установки программ
AI-помощник
На страницах курса, уроков и заданий есть кнопка «Спросить AI». Помощник знает материалы именно этого курса и урок, на котором вы сейчас, поэтому отвечает по теме и показывает, в каких уроках об этом говорится.
Не поняли урок с первого раза — попросите объяснить проще или привести ещё один пример.
Застряли — подскажет, с чего начать, и поможет найти ошибку в вашем решении. Готового решения не даёт.
Спросите, где объясняли понятие, — и получите ссылки на нужные уроки курса.
Уточняйте без повторов: помощник помнит разговор, а недавние разговоры курса сохраняются.
Входит в каждый тариф оплаченной подписки — Basic и Premium. В Premium лимиты использования AI-помощника выше — им можно пользоваться активнее. Это помощник в обучении, а не генератор готовых ответов: он объясняет и подсказывает, а задания вы решаете сами.
Программа
9 модулей, 25+ практических заданий с автоматической проверкой и 9 тестов. Откройте модуль, чтобы увидеть все темы.
Что такое автоматический тест и что он защищает, модули require, node:assert/strict: equal, deepEqual, ok, throws.
test и describe, хуки beforeEach/afterEach и before/after, skip и todo, отчёт о запуске; Promise и async/await в тестах, assert.rejects.
Как выбирать входные данные для тестов: классы эквивалентности, граничные значения, пусто/один/много, особые значения; табличные тесты и ожидания, записанные вручную.
Цикл red → green → refactor, наименьший шаг, «fake it», триангуляция, рефакторинг под зелёными тестами, тест как исполняемая спецификация; когда TDD помогает, а когда нет.
Зачем изолировать код от сети, почты и платежей; stub, spy, fake и mock; mock.fn, mock.method и проверка вызовов в node:test; зависимости как параметры.
Почему настоящее время делает тесты медленными и нестабильными, mock.timers: enable, tick, runAll, setTime, управление Date, таймеры вместе с промисами, внедрение часов.
Жёстко зашитые зависимости против внедрения зависимостей, фабрики с коллабораторами, фейковый репозиторий в памяти, заглушки для fetch, шпионы только для взаимодействий, граничные и ошибочные пути.
Покрытие строк и ветвей, мутационное тестирование, хрупкие и нестабильные тесты, поведение вместо реализации, хорошие названия тестов.
Тестирование целого модуля: список поведений, выбор случаев, двойники, структура describe, проверка, что каждое правило покрыто. Склад, библиотека с часами, ограничитель запросов по TDD.
Стек
Код пишете и запускаете в браузере на платформе — устанавливать ничего не нужно.
Доступ
Заполните короткую форму на этой странице.
После заявки перейдите в Telegram-бот Prog Academy — он пришлёт дальнейшие инструкции по доступу.
Уроки, практика и тесты — на my.prog.academy, в удобном для вас темпе.
Контакт
Оставьте контакты — пришлём детали доступа к курсу «Тестирование JavaScript: unit-тесты, TDD и моки».
Командная строка с нуля: файлы, права, процессы, сеть, bash-скрипты и SSH — в терминале учебной Ubuntu.
Путь запроса от URL до готовой страницы: DNS, TCP, TLS, HTTP, кеш, cookies, API и защита веб-приложений.
Защита от современных атак для нетехнических специалистов: фишинг, пароли и MFA, инциденты, дипфейки и безопасная работа с ИИ.
Оставьте вопрос — подскажем, подходит ли вам курс и с чего лучше начать.