Мастер-класс:
Unit-тестирование в JavaScript
Тестирование для меня - самый простой способ изменить мышление в сторону более чистой и управляемой архитектуры. “Это легко тестировать” чаще всего является синонимом “это достаточно хорошо спроектировано”. Даже если вы не практикуете тестирование на реальном проекте, понимание как это можно протестировать (а вернее почему нельзя) однозначно приведет вас к изменению стиля вашего кода

Зачем мне это?
Click to order
Оплата участия
Total: 
Имя
E-mail
Промокод
Что вы получаете?
Серия видео по ключевым аспектам теории
Закрытый чат по тестированию
Xочу знать каждую вашу боль!
Pепозиторий с примерами с семинаров
Практика

2 real-time семинара (суммарно около 4 часов) с разборами реальных примеров тестирования чистого JavaScript-кода с использованием Jest (запись будет снабжена таймкодами для удобной навигации)

Ч. 1
Теоретическая часть
Философия тестов
Ч. 4
Ч. 2
Ч. 3
Принципы unit-тестирования
Бонус
Цели и задачи тестирования
Уровни “пирамиды тестирования”
Статическая типизация
Unit-тестирование
Интеграционное тестирование
End-to-End тестирование
Детройт против Лондона: вечный холивар
Что значит "честность" и “хрупкость” теста. Почему они важны?
“Юнит” в тестировании
Структура правильного теста: Arrange, Act, Assert
Тесты и реальный мир
Сложности реальности: пользователь, latency, время и прочее
Бонус
Бонус
Бонус
На проекте совсем нет тестов, с чего и как мне начать?
Немного о компонентных тестах для frontend-инженеров
Немного о E2E-тестах для backend-инженеров
Немного о E2E-тестах для frontend-инженеров
Видео представляют собой небольшие (~15-20 минут) фрагменты теоретических изысканий, практически не привязанных к конкретному языку программирования (за исключением 4 части) и объясняющих всё “на пальцах” (а точнее пером по экрану)
Задачи тестирования
Почему не стоит гнаться за покрытием кода
Бизнес-требования и тесты
Два подхода к организации системы тестирования
Преимущества и недостатки обоих подходов
Ключевые слова мира тестирования:
Dummy, Fake, Stubs, Spies, Mocks
Фикстуры и проблемы с ними
TDD vs BDD vs ничего :)
Страшный зверь JSDOM
ЭТО НЕЛЬЗЯ ПРОТЕСТИРОВАТЬ!
Что нужно от системы тестирования
Runner
Assertion framework
Utility
скучные describe/it
Синтаксис Jest-тестов
Практическая часть
Семинар представляет собой написание конкретных тестов на Jest реального кода с пояснением что и для чего применяется. Другими словами: соотношение “документации” к практике ее применения составляет около 30 к 70% по оценке автора

each-магия
самые важные expect
jest.fn
Делаем моки и стабы :)
превращаем мок в стаб
логика внутри стабов
jest.spyOn
Шпионим за сущностями
don’t test the library?
как работает jest.mock под капотом и почему это важно
Моки модулей
javascript-модули и неочевидные нюансы
переходим в параноидальный режим
Немного “Ops”:
сode-coverage
интеграция с CI
Моки классов: что же может пойти не так?
Асинхронные тесты и event-loop
“Большие” таймеры и механизм управления ими в Jest
Асинхронные тесты

Вопросы и ответы

Почему это “мастер-класс”, а не курс
В моей картине мира курс должен обладать рядом признаков:
контролем качества на входе (иначе как понять, что мы способны научить человека?)
домашними заданиями
контролем качества на выходе
Ничего из этого в этом материале нет. Я не представляю, какое тестовое задание можно придумать на курс по тестированию, я осознанно не хочу делать домашние задания, потому что тестирование (и я хочу чтобы это усвоил каждый) чётко привязано и регулируется задачами бизнеса - в разных условиях и требованиях один и тот же код будет протестирован по-разному. Моя задача: сподвигнуть вас на максимально скорое внедрение тестирования в существующий проект, пусть даже в рамках личной инициативы. Я готов отвечать достаточно долго и развернуто на вопросы любой сложности по тестированию и особенно - по его философии
Какой уровень владения JavaScript нужен, чтобы мастер-класс был полезен?
Сложно ответить. Я искренне считаю, что материал будет полезен всем, но для того чтобы извлечь максимум пользы вы должны понимать основные примитивы и принципы работы JS: асинхронность, DOM, Promise, AJAX, fetch и так далее
Условия возврата денег
Гарантированный возврат в течение 30 дней с момента оплаты без лишних вопросов