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

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

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

Vitest предоставляет опцию environment для запуска кода в определенной среде. Вы можете изменить поведение среды с помощью опции environmentOptions.

По умолчанию доступны следующие среды:

  • node - среда по умолчанию
  • jsdom эмулирует окружение браузера, предоставляя Browser API. Использует пакет jsdom
  • happy-dom также эмулирует окружение браузера, предоставляя Browser API. Считается более быстрым, чем jsdom, но не поддерживает некоторые API. Использует пакет happy-dom
  • edge-runtime эмулирует edge-runtime от Vercel. Использует пакет @edge-runtime/vm

Среды для определенных файлов ​

При установке опции environment в конфигурации, она применяется ко всем тестовым файлам проекта. Для более точной настройки можно использовать специальные комментарии, чтобы указать среду для отдельных файлов. Эти комментарии начинаются с @vitest-environment, за которым следует имя среды:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

test('test', () => {
  expect(typeof window).not.toBe('undefined');
});

Также можно использовать опцию environmentMatchGlobs, указав среду на основе glob-паттернов.

Пользовательское окружение ​

Начиная с версии 0.23.0, можно создать собственный пакет для расширения среды Vitest. Для этого создайте пакет с именем vitest-environment-${name} или укажите путь к допустимому JS-файлу (поддерживается с версии 0.34.0). Этот пакет должен экспортировать объект в формате Environment:

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // optional - only if you support "experimental-vm" pool
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // вызывается после выполнения всех тестов с этой средой
      },
    };
  },
  setup() {
    // custom setup
    return {
      teardown() {
        // вызывается после выполнения всех тестов с этой средой
      },
    };
  },
};

WARNING

Начиная с версии 0.34.0, Vitest требует указания опции transformMode в объекте среды. Она должна быть равна ssr или web. Это значение определяет, как плагины будут преобразовывать исходный код. Если установлено значение ssr, хуки плагина будут получать ssr: true при преобразовании или разрешении файлов, иначе ssr будет false.

У вас также есть доступ к средам Vitest по умолчанию через запись vitest/environments:

ts
import { builtinEnvironments, populateGlobal } from 'vitest/environments';

console.log(builtinEnvironments); // { jsdom, happy-dom, node, edge-runtime }

Vitest также предоставляет утилиту populateGlobal для перемещения свойств из объекта в глобальное пространство имен.

ts
interface PopulateOptions {
  // следует ли привязывать функции, не являющиеся классами, к глобальному пространству имен
  bindFunctions?: boolean;
}

interface PopulateResult {
  // список всех скопированных ключей, даже если значение не существует в исходном объекте
  keys: Set<string>;
  // карта исходного объекта, который мог быть переопределен ключами
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Предыдущая страницаКонтекст теста
Следующая страницаРасширение проверок (matchers)

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

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

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

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

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