[javascript.ninja] Тестирование Vue-приложений (Илья Климов)
Кратко:
Серия видео по ключевым аспектам теории
2 real-time семинара (суммарно около 4-5 часов) с разборами реальных примеров тестирования Vue-компонентов с использованием Jest (запись будет снабжена таймкодами для удобной навигации)
репозиторий с примерами с семинаров
Закрытый чат по тестированию (хочу знать каждую вашу боль!)
Доступ к видео: 1 февраля 10:00 по Украине, семинары: 6 и 13 февраля 11:00 (пара часов + общение)
Зачем мне это?
Как показал мой опыт работы в GitLab - тестирование Vue-компонентов не самая сильная сторона даже тех, кто съел собаку на тестировании к примеру backend-кода. Здесь “аукается” то, что во Vue очень много сложных возможностей, которые нетривиально тестировать. Добавьте к этому некие удивительные особенности @vue/test-utils (у автора порядка 10 принятых pull-requests в репозиторий) - и получите прекрасный коктейль сложного тестирования
Видео представляют собой небольшие (~15-30 минут) фрагменты теоретических изысканий, объясняющих всё “на пальцах” (а точнее пером по экрану)
- Что именно тестируется во Vue-компонентах?
- Вывод компонента в зависимости от props
- Когда мы передаем такие-то параметры, мы ожидаем что кнопка видна
- Когда мы передаем такие-то параметры, мы ожидаем, что видна аватарка пользователя с такими-то параметрами
- Генерирование побочных эффектов
- Когда пользователь нажимает на вот этот элемент, мы ожидаем что компонент генерирует событие 'Submit' с такими-то параметрами
- Когда компонент появляется в DOM-дереве, мы ожидаем что компонент вызывает функцию getUser у такого-то объекта
- Когда пользователь нажимает на вот этот элемент, мы ожидаем что компонент генерирует событие 'Submit' с такими-то параметрами
- Реакция компонента на внешние воздействия
- Когда мы вводим данные в это поле, мы ожидаем что вот эта кнопка будет включена
- Когда компонент dropdown генерирует событие change, мы ожидаем что вот это поле будет обновлено
- Когда вызванная функция возвращает такие-то значения, мы ожидаем что в списке будет ровно три элемента
- Когда мы вводим данные в это поле, мы ожидаем что вот эта кнопка будет включена
- Вывод компонента в зависимости от props
- Что предлагает нам @vue/test-utils для тестирования?
- Жизненный цикл компонента сквозь призму тестирования
- Холивар: mount vs shallowMount
- Как выбрать?
- Стоит ли всегда выбирать одно?
- Последствия выбора?
- Как выбрать?
- Бонус: А что поменяется во Vue3?
- Бонус: Компонентные тесты и Vue: как и когда?
Семинар представляет собой написание и критику конкретных тестов на Jest реального кода с пояснением что и для чего применяется. Другими словами: соотношение “документации” к практике ее применения составляет около 30 к 70% по оценке автора
- Антипаттерны тестирования Vue-компонентов
- Тестирование computed-свойств
- Использование setData
- Использование setProps
- Использование setMethods
- Тестирование computed-свойств
- Тестирование снапшотами
- Какие задачи решают снапшоты
- Когда стоит использовать снапшоты и как
- Слабые места снапшотов
- Какие задачи решают снапшоты
- Структура классического Vue-теста
- Фикстуры
- Какую задачу решают фикстуры?
- Почему важно использовать фикстуры, а не писать самому параметры?
- Аккуратно: мутация фикстур!
- Признаки 'здесь надо использовать фикстуры'
- Какую задачу решают фикстуры?
- Тестирование компонентов со слотами
- В чём сложность?
- Создание простейшего стаба для рендера слота
- Стабы с динамическими слотами
- Scoped slots с логикой
- Когда можно вместо стаба передать настоящий компонент и чем это грозит?
- В чём сложность?
- Тестирование компонентов с Vuex
- Создание и передача мока сторы
- Как портят жизнь `mapActions, map...`
- Корректно мокаем actions/mutations
- Тестирование самой сторы
- Создание и передача мока сторы
- Тестирование компонентов с Apollo GraphQL
- Что для компонента означает использование в нем Apollo?
- apollo-link-mock
- На что обратить внимание
- Что для компонента означает использование в нем Apollo?
? Почему это “мастер-класс”, а не курс
? В моей картине мира курс должен обладать рядом признаков:
- контролем качества на входе (иначе как понять, что мы способны научить человека?)
- домашними заданиями
- контролем качества на выходе
? Я не смогу присутствовать лично на семинаре, что я потеряю?
? Вы потеряете возможность задать вопросы в реал-тайм и получить ответ сразу же на стриме. Мы всё так же будем крайне рады вас видеть в нашем канале и с удовольствием ответим на ваши вопросы
? Какой уровень владения Vue и тестами нужен, чтобы мастер-класс был полезен?
? На мастер-классе не будет пояснения базовых концепций тестирования. Возможно
Скрытый текст. Доступен только зарегистрированным пользователям.
поможет их освоить. Также ожидается, что Вы знакомы с терминологией Vue и принципами использования основных его возможностей? Условия возврата денег
? Гарантированный возврат в течение 30 дней с момента оплаты без лишних вопросов