Skip to content
Vitest 1
Main Navigation PrzewodnikAPIKonfiguracjaZaawansowany
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

Przewodnik

Dlaczego Vitest

Wprowadzenie

Funkcje

Przestrzeń robocza

Interfejs Linii Poleceń

Filtrowanie Testów

Reportery

Pokrycie kodu

Snapshot

Mockowanie

Testowanie typów

Interfejs użytkownika Vitest

Tryb przeglądarki

Testowanie w kodzie źródłowym

Kontekst Testowy

Środowisko Testowe

Rozszerzanie Matcherów

Integracje z IDE

Debugowanie

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

Przewodnik migracji

Częste błędy

Poprawa wydajności

API

Dokumentacja API Testów

Funkcje Mockujące

Vi

expect

expectTypeOf

assert

assertType

Konfiguracja

Zarządzanie plikiem konfiguracyjnym Vitest

Konfiguracja Vitest

Na tej stronie

Środowisko Testowe ​

Vitest oferuje opcję environment, aby uruchamiać kod w określonym środowisku. Możesz dostosować zachowanie środowiska za pomocą opcji environmentOptions.

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

  • node – środowisko domyślne.
  • jsdom – symuluje środowisko przeglądarki, udostępniając API przeglądarki. Wykorzystuje pakiet jsdom.
  • happy-dom – emuluje środowisko przeglądarki, udostępniając API przeglądarki. Uważane za szybsze od jsdom, ale nie obsługuje wszystkich funkcji. Wykorzystuje pakiet happy-dom.
  • edge-runtime – emuluje edge-runtime firmy Vercel. Wykorzystuje pakiet @edge-runtime/vm.

Środowiska dla konkretnych plików ​

Ustawienie opcji environment w konfiguracji globalnej zastosuje ją do wszystkich plików testowych w projekcie. Aby uzyskać bardziej szczegółową kontrolę, możesz użyć komentarzy sterujących, aby określić środowisko dla konkretnych plików. Komentarze sterujące zaczynają się od @vitest-environment, po którym następuje nazwa środowiska:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

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

Możesz także użyć opcji environmentMatchGlobs, określając środowisko na podstawie wzorców glob.

Własne środowisko ​

Od wersji 0.23.0 możesz stworzyć własny pakiet, aby rozszerzyć środowisko Vitest. W tym celu utwórz pakiet o nazwie vitest-environment-${name} lub określ ścieżkę do prawidłowego pliku JS (obsługiwane od wersji 0.34.0). Ten pakiet powinien eksportować obiekt typu Environment:

ts
import type { Environment } from 'vitest';

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() {
    // niestandardowa konfiguracja
    return {
      teardown() {
        // wywoływana po wykonaniu wszystkich testów w tym środowisku
      },
    };
  },
};

WARNING

Od wersji 0.34.0 Vitest wymaga opcji transformMode w obiekcie środowiska. Powinna ona przyjmować wartość ssr lub web. Ta wartość określa sposób transformacji kodu źródłowego przez wtyczki. Jeśli jest ustawiona na ssr, hooki wtyczek otrzymają ssr: true podczas transformacji lub rozwiązywania plików. W przeciwnym razie ssr będzie ustawione na false.

Możesz także uzyskać dostęp do domyślnych środowisk Vitest, importując je z 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, służącą do przenoszenia atrybutów z obiektu do przestrzeni globalnej:

ts
interface PopulateOptions {
  // czy funkcje, które nie są klasami, powinny być powiązane z globalną przestrzenią nazw
  bindFunctions?: boolean;
}

interface PopulateResult {
  // lista wszystkich kluczy, które zostały skopiowane, nawet jeśli w oryginalnym obiekcie nie istnieje odpowiadająca im wartość
  keys: Set<string>;
  // mapa oryginalnego obiektu, którego właściwości mogły zostać nadpisane
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Poprzednia stronaKontekst Testowy
Następna stronaRozszerzanie Matcherów

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors

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

Opublikowano na licencji MIT.

Copyright (c) 2024 Mithril Contributors