TypeScript: основы
Пишите JavaScript, в котором ошибки находит компилятор, а не пользователь
Курс по подписке
Пишите тесты, которые ловят настоящие ошибки, — и код, которому можно доверять
Получить доступ к курсу
Курс по подписке · Обучение в своём темпе · Без звонков и консультаций
О курсе
Курс для тех, кто уже пишет на 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, без установки программ
Платформа Prog Academy
Курс проходит на платформе Prog Academy — вместе с ним вы получаете AI-помощника и инструменты для поиска первой работы в IT.
Обучение
Вы учитесь, выполняя задания: каждую новую тему сразу применяете на практике, а не только читаете теорию. Задания проверяются автоматически, прямо в браузере.
Вы не остаётесь один на один с материалом
Что-то непонятно или застряли на задании — спросите прямо в уроке. Помощник объяснит тему проще, ответит на вопросы, поможет разобраться в условии задания и подскажет следующий шаг, найдёт нужное в материалах курса. Он знает, какой урок вы проходите, и помнит разговор.
Карьера
Успешно прошли курс — получаете сертификат и в один клик добавляете его в профиль LinkedIn.
Резюме на английском, украинском или русском — прямо на платформе. Ваши курсы и сертификаты добавляются в него в пару кликов.
Junior-вакансии и стажировки в одном месте — с подборкой под курсы, которые вы проходите.
Вся платформа — в одном аккаунте
Программа
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 и моки». Без звонков и консультаций.
Пишите JavaScript, в котором ошибки находит компилятор, а не пользователь
Docker с нуля: от первого контейнера до собственного стека в Docker Compose
От «пишу, и оно работает» к «понимаю, почему работает»: современный JavaScript изнутри
Оставьте вопрос — подскажем, подходит ли вам курс и с чего лучше начать.