Skip to content
Vitest 2
Main Navigation PrůvodceAPIKonfiguraceRežim prohlížečePokročilý
2.1.9
1.6.1
0.34.6

čeština

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

čeština

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

Vzhled

Sidebar Navigation

Proč Vitest

Začínáme

Funkce

Workspace

Rozhraní příkazového řádku

Filtrování testů

Reportéři

Pokrytí

Snímky

Mockování

Testování typů

Vitest UI

Testování ve zdrojovém kódu

Kontext testu

Testovací prostředí

Rozšíření matcherů/porovnávačů

Integrace do IDE

Ladění

Srovnání s jinými testovacími nástroji

Průvodce migrací

Běžné chyby

Profiling Test Performance

Zvýšení výkonu

Na této stránce

Testovací prostředí ​

Vitest nabízí možnost environment pro spouštění kódu v konkrétním prostředí. Chování prostředí lze dále upravit pomocí možnosti environmentOptions.

Ve výchozím nastavení jsou k dispozici následující prostředí:

  • node je výchozí prostředí.
  • jsdom emuluje prostředí prohlížeče a poskytuje Browser API; využívá balíček jsdom.
  • happy-dom emuluje prostředí prohlížeče, poskytuje Browser API a je považováno za rychlejší než jsdom, ačkoli mu chybí některá API; využívá balíček happy-dom.
  • edge-runtime emuluje edge-runtime od Vercel; využívá balíček @edge-runtime/vm.

INFO

Při použití prostředí jsdom nebo happy-dom se Vitest řídí stejnými pravidly jako Vite při importu CSS a assetů. Pokud import externí závislosti selže s chybou "unknown extension .css", je nutné ručně zahrnout celý řetězec importů přidáním všech balíčků do server.deps.external. Například, pokud chyba nastane v package-3 v tomto řetězci importů: source code -> package-1 -> package-2 -> package-3, musíte přidat všechny tři balíčky do server.deps.external.

Od Vitest 2.0.4 se require CSS a assetů uvnitř externích závislostí řeší automaticky.

WARNING

"Prostředí" existují pouze při spouštění testů v Node.js.

browser není ve Vitestu považováno za prostředí. Pokud chcete spustit část svých testů pomocí režimu prohlížeče, můžete vytvořit projekt pracovního prostoru.

Prostředí pro Konkrétní Soubory ​

Když nastavíte možnost environment ve své konfiguraci, bude se vztahovat na všechny testovací soubory ve vašem projektu. Pro jemnější kontrolu můžete použít ovládací komentáře k určení prostředí pro konkrétní soubory. Ovládací komentáře jsou komentáře, které začínají @vitest-environment a za nimiž následuje název prostředí:

ts
// @vitest-environment jsdom

import { expect, test } from 'vitest';

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

Můžete také nastavit možnost environmentMatchGlobs, která určuje prostředí na základě globálních vzorů.

Vlastní Prostředí ​

Můžete si vytvořit vlastní balíček pro rozšíření prostředí Vitest. Chcete-li tak učinit, vytvořte balíček s názvem vitest-environment-${name} nebo zadejte cestu k platnému souboru JS/TS. Tento balíček by měl exportovat objekt ve tvaru Environment:

ts
import type { Environment } from 'vitest';

export default <Environment>{
  name: 'custom',
  transformMode: 'ssr',
  // volitelné – pouze pokud podporujete "experimental-vm" pool
  async setupVM() {
    const vm = await import('node:vm');
    const context = vm.createContext();
    return {
      getVmContext() {
        return context;
      },
      teardown() {
        // voláno po spuštění všech testů s tímto prostředím
      },
    };
  },
  setup() {
    // vlastní nastavení
    return {
      teardown() {
        // voláno po spuštění všech testů s tímto prostředím
      },
    };
  },
};

WARNING

Vitest vyžaduje možnost transformMode na objektu prostředí. Měla by být rovna ssr nebo web. Tato hodnota určuje, jak budou pluginy transformovat zdrojový kód. Pokud je nastavena na ssr, hooky pluginů obdrží ssr: true při transformaci nebo řešení souborů. Jinak je ssr nastaveno na false.

Máte také přístup k výchozím prostředím Vitest prostřednictvím vstupu vitest/environments:

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

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

Vitest také poskytuje pomocnou funkci populateGlobal, kterou lze použít k přesunutí vlastností objektu do globálního jmenného prostoru:

ts
interface PopulateOptions {
  // měly by být funkce, které nejsou třídami, vázány na globální jmenný prostor
  bindFunctions?: boolean;
}

interface PopulateResult {
  // seznam všech klíčů, které byly zkopírovány, i když hodnota neexistuje na původním objektu
  keys: Set<string>;
  // mapa původního objektu, jehož klíče mohly být přepsány
  // tyto hodnoty můžete vrátit v rámci funkce `teardown`
  originals: Map<string | symbol, any>;
}

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Předchozí stránkaKontext testu
Další stránkaRozšíření matcherů/porovnávačů

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors