Skip to content
Vitest 3
Main Navigation Průvodce & APIKonfiguraceRežim prohlížečePokročilé API
3.2.0
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

Úvod

Proč Vitest

Začínáme

Funkce

Konfigurace Vitestu

API

Testovací reference API

Mockovací funkce

Vi

expect

expectTypeOf

assert

assertType

Průvodce

Rozhraní příkazového řádku

Filtrování testů

Testovací projekty

Generátory zpráv

Pokrytí kódu

Snímky

Mockování

Paralelní zpracování

Typové testování

Vitest UI

Testování přímo ve zdrojovém kódu

Testovací kontext

Anotace testů

Testovací prostředí

Rozšíření matcherů

Integrace s IDE

Ladění

Běžné chyby

Průvodce migrací

Migrace na Vitest 3.0

Migrace z Jest

Výkon

Profilování výkonu testů

Zlepšení výkonu

Režim prohlížeče

Rozšířené API

Srovnání

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 API prohlížeče; využívá balíček jsdom.
  • happy-dom emuluje prostředí prohlížeče a poskytuje API prohlížeče; je považováno za rychlejší než jsdom, avšak postrádá některá API; využívá balíček happy-dom.
  • edge-runtime emuluje Vercel edge-runtime; 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 pro import CSS a assetů. Pokud import externí závislosti selže s chybou unknown extension .css, je nutné ručně zahrnout celý importní řetězec přidáním všech balíčků do server.deps.external. Například, pokud se chyba vyskytne v package-3 v tomto importním řetězci: source code -> package-1 -> package-2 -> package-3, musíte přidat všechny tři balíčky do server.deps.external.

require CSS a assetů uvnitř externích závislostí je řešeno automaticky.

WARNING

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

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

Prostředí pro konkrétní soubory ​

Když nastavíte možnost environment ve své konfiguraci, platí pro všechny testovací soubory ve vašem projektu. Pro detailnější kontrolu můžete použít kontrolní komentáře k určení prostředí pro konkrétní soubory. Kontrolní 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 uveďte cestu k platnému JS/TS souboru. Tento balíček by měl exportovat objekt ve tvaru Environment:

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

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

WARNING

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

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

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

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

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

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

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

export function populateGlobal(
  global: any,
  original: any,
  options: PopulateOptions
): PopulateResult;
Pager
Předchozí stránkaAnotace testů
Další stránkaRozšíření matcherů

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/environment

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team