Зачем Vitest
ПРИМЕЧАНИЕ
Предполагается, что вы знакомы с Vite. Лучший способ узнать о нём — прочитать Руководство "Зачем Vite" и посмотреть стрим Инструменты для фронтенда нового поколения с ViteJS, где Эван Ю продемонстрировал основные концепции.
Необходимость в тестовом раннере, разработанном специально для Vite
Встроенная поддержка Vite распространённых веб-паттернов, таких как glob-импорты и SSR-примитивы, а также множество плагинов и интеграций способствуют созданию динамичной экосистемы. Его возможности в разработке и сборке являются ключевым фактором его успеха. Существует несколько SSG-решений, работающих на Vite. Однако модульное тестирование в Vite оставалось нерешённым вопросом. Существующие варианты, такие как Jest, были созданы в другом контексте. Существует много дублирования между Jest и Vite, что вынуждает пользователей настраивать два отдельных конвейера.
Использование dev-сервера Vite для преобразования ваших файлов во время тестирования позволяет создать простой раннер, которому не нужно заниматься сложным преобразованием исходных файлов и который может сосредоточиться исключительно на обеспечении наилучшего опыта разработки (DX) во время тестирования. Тест-раннер использует ту же конфигурацию, что и ваше приложение (через vite.config.js
). Таким образом, он разделяет общий конвейер преобразования во время разработки, сборки и тестирования. Он расширяем с помощью того же API плагинов, что позволяет вам и разработчикам ваших инструментов обеспечивать первоклассную интеграцию с Vite. Это инструмент, который изначально разрабатывался с учетом Vite. Он использует преимущества улучшений в DX, таких как мгновенная горячая перезагрузка модулей (HMR). Это Vitest, очень быстрый фреймворк для модульного тестирования, основанный на Vite.
Учитывая широкое распространение Jest, Vitest предоставляет совместимый API, который позволяет использовать его как готовую замену в большинстве проектов. Он также включает в себя наиболее распространенные функции, необходимые при настройке модульных тестов (мокирование, снапшоты, покрытие). Vitest уделяет большое внимание производительности и использует Worker threads (рабочие потоки) для максимально параллельного выполнения. В некоторых случаях тесты выполняются в десятки раз быстрее. Режим Watch (наблюдение за изменениями файлов) включен по умолчанию, что соответствует подходу Vite, ориентированному на разработку. Несмотря на все эти улучшения в DX, Vitest остается легковесным, тщательно выбирая свои зависимости (или напрямую встраивая необходимые компоненты).
Vitest стремится стать предпочтительным Test Runner для проектов Vite и надежной альтернативой даже для проектов, которые не используют Vite.
Продолжайте чтение в Руководстве по началу работы
Чем Vitest отличается от X?
Вы можете ознакомиться с разделом Сравнения для получения более подробной информации о том, чем Vitest отличается от других подобных инструментов.