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