Skip to content
Vitest 1
Main Navigation РуководствоAPIКонфигурацияПродвинутый
1.6.1
0.34.6

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Русский

English
简体中文
繁體中文
Español
Français
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština
magyar

Внешний вид

Sidebar Navigation

Руководство

Зачем Vitest

Начало работы

Функциональность

Рабочая область

Интерфейс командной строки

Фильтрация тестов

Репортёры

Покрытие кода

Снапшоты

Мокирование

Тестирование типов

Vitest UI

Режим браузера

In-source тестирование (Тестирование в исходном коде)

Контекст теста

Тестовая среда

Расширение проверок (matchers)

Интеграции с IDE

Отладка

Сравнения с другими тестовыми фреймворками

Руководство по миграции

Распространенные ошибки

Улучшение производительности

API

Справочник по Test API

Mock-функции

Vitest

expect

expectTypeOf

assert

assertType

Конфигурация

Настройка конфигурационного файла Vitest

Настройка Vitest

Содержание страницы

Сравнения с другими тестовыми фреймворками ​

Jest ​

Jest является одним из лидеров среди тестовых фреймворков, предлагая готовую поддержку для большинства JavaScript-проектов, удобный API (it и expect) и полный набор функций тестирования, которые могут потребоваться в большинстве случаев (снимки, моки, покрытие). Мы благодарны команде и сообществу Jest за создание удобного API для тестирования и продвижение множества шаблонов тестирования, которые сейчас являются стандартом в веб-экосистеме.

Можно использовать Jest в проектах Vite. @sodatea создал vite-jest, который стремится обеспечить интеграцию Vite и Jest на высоком уровне. Последние проблемы, препятствовавшие интеграции Jest, были решены, поэтому это подходящий вариант для ваших юнит-тестов.

Однако, в мире, где существует Vite, обеспечивающий поддержку наиболее распространенных веб-инструментов (TypeScript, JSX, большинство популярных UI-фреймворков), использование Jest может привести к дублированию сложности. Если ваше приложение работает на Vite, нет смысла иметь два разных конвейера для настройки и поддержки. С Vitest вы можете определить конфигурацию для вашей среды разработки, сборки и тестирования как единый конвейер, совместно используя одни и те же плагины и тот же vite.config.js.

Даже если ваша библиотека не использует Vite (например, если она построена с помощью esbuild или Rollup), Vitest является интересным вариантом, поскольку он обеспечивает более быстрый запуск ваших юнит-тестов и улучшает удобство разработки благодаря режиму отслеживания изменений по умолчанию, использующему мгновенную горячую перезагрузку модулей (HMR) Vite. Vitest предлагает совместимость с большинством API Jest и библиотек экосистемы, поэтому в большинстве проектов он может быть прямой заменой Jest.

Cypress ​

Cypress - это тестовый фреймворк на основе браузера и полезное дополнение к Vitest. Если вы хотите использовать Cypress, мы рекомендуем использовать Vitest для всей логики без графического интерфейса в вашем приложении, а Cypress - для всей логики, связанной с браузером.

Cypress известен как инструмент для сквозного (end-to-end) тестирования, но их новый тестовый фреймворк для компонентов имеет отличную поддержку для тестирования компонентов Vite и является идеальным выбором для тестирования всего, что отображается в браузере.

Тестовые среды на основе браузера, такие как Cypress, WebdriverIO и Web Test Runner, выявляют проблемы, которые Vitest не может выявить, потому что они используют реальный браузер и реальные API браузера.

Механизм тестирования Cypress ориентирован на определение того, являются ли элементы видимыми, доступными и интерактивными. Cypress специально создан для разработки и тестирования пользовательского интерфейса, и его DX (Developer Experience) сосредоточен вокруг управления тестированием ваших визуальных компонентов. Вы видите свой компонент, отображаемый вместе с тестовым репортером. После завершения теста компонент остается интерактивным, и вы можете отлаживать любые сбои, используя инструменты разработчика вашего браузера.

В отличие от этого, Vitest ориентирован на обеспечение наилучшего DX для молниеносного, headless (без графического интерфейса) тестирования. Фреймворки на основе Node, такие как Vitest, поддерживают различные частично реализованные браузерные среды, такие как jsdom, которые реализуют достаточно, чтобы вы могли быстро протестировать любой код, который ссылается на API браузера. Обратной стороной является то, что эти браузерные среды имеют ограничения в том, что они могут реализовать. Например, в jsdom отсутствует ряд функций, таких как window.navigation или механизм компоновки (offsetTop и т. д.).

Наконец, в отличие от Web Test Runner, Cypress больше похож на IDE, чем просто на средство запуска тестов, потому что вы также видите реальный отображаемый компонент в браузере вместе с результатами и журналами тестов.

Cypress также интегрирует Vite в свои продукты: перерабатывает пользовательский интерфейс своего приложения с помощью Vitesse и использует Vite для тестирования в процессе разработки своего проекта.

Мы считаем, что Cypress не является хорошим вариантом для юнит-тестирования кода без графического интерфейса, но использование Cypress (для E2E и Component Testing) и Vitest (для юнит-тестов) полностью удовлетворит потребности вашего приложения в тестировании.

WebdriverIO ​

WebdriverIO, как и Cypress, является альтернативным тестовым фреймворком на основе браузера и полезным дополнением к Vitest. Он может использоваться как инструмент для сквозного тестирования, а также для тестирования веб-компонентов. Он даже использует компоненты Vitest внутри, например, для мокирования и стаббинга в тестах компонентов.

WebdriverIO обладает теми же преимуществами, что и Cypress, позволяя тестировать логику непосредственно в реальном браузере. Однако он использует фактические веб-стандарты для автоматизации, что позволяет избежать некоторых компромиссов и ограничений при запуске тестов в Cypress. Кроме того, он позволяет тестировать ваше приложение на мобильных устройствах, предоставляя вам доступ к тестированию вашего приложения в еще большем количестве сред.

Web Test Runner ​

@web/test-runner запускает тесты внутри браузера без графического интерфейса, обеспечивая ту же среду выполнения, что и ваше веб-приложение, без необходимости мокировать API браузера или DOM. Это также позволяет отлаживать внутри реального браузера с помощью инструментов разработчика, хотя нет пользовательского интерфейса для пошагового выполнения теста, как в тестах Cypress.

Чтобы использовать @web/test-runner с проектом Vite, используйте @remcovaes/web-test-runner-vite-plugin. @web/test-runner не включает библиотеки утверждений или мокирования, поэтому вам нужно добавить их самостоятельно.

uvu ​

uvu - это тестовый фреймворк для Node.js и браузера. Он запускает тесты в одном потоке, поэтому тесты не изолированы и могут просачиваться между файлами. Vitest, однако, использует рабочие потоки для изоляции тестов и запускает их параллельно.

Для преобразования вашего кода uvu полагается на require и хуки загрузчика. Vitest использует Vite, поэтому файлы преобразуются с использованием всей мощи системы плагинов Vite. В мире, где существует Vite, обеспечивающий поддержку наиболее распространенных веб-инструментов (TypeScript, JSX, большинство популярных UI-фреймворков), uvu также усложняет процесс. Если ваше приложение работает на Vite, нет смысла иметь два разных конвейера для настройки и поддержки. С Vitest вы можете определить конфигурацию для вашей среды разработки, сборки и тестирования как единый конвейер, совместно используя одни и те же плагины и тот же конфигурацию.

uvu не предоставляет интеллектуальный режим отслеживания изменений для перезапуска измененных тестов, в то время как Vitest обеспечивает отличный опыт разработки благодаря режиму отслеживания изменений, использующему мгновенную горячую перезагрузку модулей (HMR) Vite.

uvu - это быстрый вариант для запуска простых тестов, но Vitest может быть быстрее и надежнее для более сложных тестов и проектов.

Pager
Предыдущая страницаОтладка
Следующая страницаРуководство по миграции

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors

https://v1.vitest.dev/guide/comparisons

Выпущено на условиях лицензии MIT.

Авторские права (c) 2024 Mithril Contributors