Skip to content
Vitest 3
Main Navigation Przewodnik & APIKonfiguracjaTryb przeglądarkiZaawansowane API
3.2.0
2.1.9
1.6.1
0.34.6

Polski

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

Polski

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

Wygląd

Sidebar Navigation

Wprowadzenie

Dlaczego Vitest

Pierwsze kroki

Funkcje

Konfiguracja Vitest

API

Dokumentacja API testowego

Funkcje Mock

Vi

expect

expectTypeOf

assert

assertType

Przewodnik

Interfejs Wiersza Poleceń

Filtrowanie testów

Projekty testowe

Reportery

Pokrycie kodu

Migawki

Mockowanie

Równoległość

Typy testów

Interfejs użytkownika Vitest

Testy w kodzie źródłowym

Kontekst Testu

Adnotacje testowe

Środowisko testowe

Rozszerzanie matcherów

Integracje z IDE

Debugowanie

Typowe błędy

Przewodnik migracji

Migracja do Vitest 3.0

Migracja z Jest

Wydajność

Profilowanie wydajności testów

Poprawa wydajności

Tryb przeglądarkowy

Zaawansowane API

Porównania z innymi narzędziami do uruchamiania testów

Na tej stronie

Środowisko testowe ​

Vitest udostępnia opcję environment do uruchamiania kodu w określonym środowisku. Możesz modyfikować zachowanie środowiska za pomocą opcji environmentOptions.

Domyślnie dostępne są następujące środowiska:

  • node to domyślne środowisko.
  • jsdom emuluje środowisko przeglądarki, udostępniając API przeglądarki. Wykorzystuje pakiet jsdom.
  • happy-dom emuluje środowisko przeglądarki, udostępniając API przeglądarki. Jest uważany za szybszy od jsdom, choć brakuje mu niektórych API. Wykorzystuje pakiet happy-dom.
  • edge-runtime emuluje środowisko edge-runtime firmy Vercel. Wykorzystuje pakiet @edge-runtime/vm.

INFO

Podczas korzystania ze środowisk jsdom lub happy-dom, Vitest przestrzega tych samych zasad, co Vite podczas importowania CSS i zasobów statycznych. Jeśli importowanie zewnętrznej zależności kończy się błędem unknown extension .css, musisz ręcznie obsłużyć cały łańcuch importów, dodając wszystkie pakiety do server.deps.external. Na przykład, jeśli błąd występuje w package-3 w tym łańcuchu importów: kod źródłowy -> package-1 -> package-2 -> package-3, musisz dodać wszystkie trzy pakiety do server.deps.external.

Wywołania require dla CSS i zasobów w zewnętrznych zależnościach są automatycznie rozwiązywane.

WARNING

Środowiska istnieją tylko podczas uruchamiania testów w Node.js.

browser nie jest uważany za środowisko w Vitest. Jeśli chcesz uruchomić część swoich testów w trybie przeglądarki, możesz utworzyć projekt testów.

Środowiska dla określonych plików ​

Ustawienie opcji environment w konfiguracji zastosuje się do wszystkich plików testowych w projekcie. Aby mieć bardziej szczegółową kontrolę, możesz użyć komentarzy kontrolnych do określenia środowiska dla konkretnych plików. Komentarze kontrolne to komentarze zaczynające się od @vitest-environment, po których następuje nazwa środowiska:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

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

Możesz również ustawić opcję environmentMatchGlobs, określając środowisko według wzorców glob.

Niestandardowe środowisko ​

Możesz utworzyć własny pakiet, aby rozszerzyć środowisko Vitest. Aby to zrobić, utwórz pakiet o nazwie vitest-environment-${name} lub określ ścieżkę do prawidłowego pliku JS/TS. Ten pakiet powinien eksportować obiekt zgodny z interfejsem Environment:

ts
import type { Environment } from 'vitest/environments';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // opcjonalne - tylko jeśli obsługujesz pulę "experimental-vm"
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // wywoływane po uruchomieniu wszystkich testów w tym środowisku
      },
    };
  },
  setup() {
    // własna konfiguracja
    return {
      teardown() {
        // wywoływane po uruchomieniu wszystkich testów w tym środowisku
      },
    };
  },
};

WARNING

Vitest wymaga opcji transformMode na obiekcie środowiska. Powinna być równa ssr lub web. Ta wartość określa, jak wtyczki będą przekształcać kod źródłowy. Jeśli jest ustawiona na ssr, hooki wtyczek otrzymają ssr: true podczas przekształcania lub rozwiązywania plików. W przeciwnym razie ssr jest ustawione na false.

Masz też dostęp do domyślnych środowisk Vitest poprzez wpis vitest/environments:

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

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

Vitest udostępnia również funkcję pomocniczą populateGlobal, która może być użyta do przenoszenia właściwości obiektu do globalnej przestrzeni nazw:

ts
interface PopulateOptions {
  // czy funkcje niebędące klasami powinny być powiązane z globalną przestrzenią nazw
  bindFunctions?: boolean;
}

interface PopulateResult {
  // lista wszystkich skopiowanych kluczy, nawet jeśli wartość nie istnieje w oryginalnym obiekcie
  keys: Set<string>;
  // mapa oryginalnych wartości, które mogły zostać nadpisane
  // możesz zwrócić te wartości w funkcji `teardown`
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Poprzednia stronaAdnotacje testowe
Następna stronaRozszerzanie matcherów

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/environment

Opublikowano na licencji MIT.

Copyright (c) 2021-Present Vitest Team