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

Pracovní prostor ​

Ukázkový projekt

GitHub - Spustit online

Vitest umožňuje definovat více konfigurací projektu v rámci jedné instance. Tato funkce je obzvláště užitečná pro monorepo struktury, ale lze ji také využít ke spouštění testů s různými konfiguracemi, jako jsou resolve.alias, plugins nebo test.browser a další.

Definování pracovního prostoru ​

Pracovní prostor musí obsahovat soubor vitest.workspace nebo vitest.projects ve svém kořenovém adresáři (umístěný ve stejné složce jako váš kořenový konfigurační soubor, nebo pokud neexistuje, ve vašem pracovním adresáři). Vitest podporuje pro tento soubor přípony ts, js a json.

NÁZEV

Vezměte prosím na vědomí, že tato funkce se jmenuje workspace, nikoli workspaces (bez "s" na konci).

Konfigurační soubor pracovního prostoru musí mít výchozí export se seznamem souborů nebo glob vzorů odkazujících na vaše projekty. Například, pokud máte složku s názvem packages, která obsahuje vaše projekty, můžete definovat pracovní prostor s tímto konfiguračním souborem:

ts
export default ['packages/*'];

Vitest bude považovat každou složku v packages za samostatný projekt, i když uvnitř nemá konfigurační soubor. Od verze Vitest 2.1, pokud tento glob vzor odpovídá jakémukoli souboru, bude považován za konfiguraci Vitest, i když nemá ve svém názvu vitest.

WARNING

Vitest nepovažuje kořenový soubor vitest.config za projekt pracovního prostoru, pokud není explicitně specifikován v konfiguraci pracovního prostoru. Proto bude kořenová konfigurace ovlivňovat pouze globální možnosti, jako jsou reporters a coverage.

Můžete také odkazovat na projekty pomocí jejich konfiguračních souborů:

ts
export default ['packages/*/vitest.config.{e2e,unit}.ts'];

Tento vzor zahrne pouze projekty, které mají soubor vitest.config obsahující e2e nebo unit před příponou.

Projekty můžete také definovat pomocí inline konfigurace. Soubor pracovního prostoru podporuje obě syntaxe současně.

ts
import { defineWorkspace } from 'vitest/config';

// defineWorkspace poskytuje užitečnou nápovědu k typům
export default defineWorkspace([
  // odpovídá každé složce a souboru uvnitř složky `packages`
  'packages/*',
  {
    // přidejte "extends" pro sloučení dvou konfigurací
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // při použití inline konfigurací se doporučuje definovat název
      name: 'happy-dom',
      environment: 'happy-dom',
    },
  },
  {
    test: {
      include: ['tests/**/*.{node}.test.{ts,js}'],
      name: 'node',
      environment: 'node',
    },
  },
]);

WARNING

Všechny projekty musí mít jedinečné názvy; jinak Vitest vyhodí chybu. Pokud název není uveden v inline konfiguraci, Vitest přiřadí číselný identifikátor. Pro konfigurace projektů definované pomocí glob syntaxe Vitest ve výchozím nastavení použije vlastnost "name" v nejbližším souboru package.json nebo, pokud žádný neexistuje, název složky.

Pokud nepoužíváte inline konfigurace, můžete vytvořit jednoduchý soubor JSON ve svém kořenovém adresáři:

json
["packages/*"]

Projekty pracovního prostoru nepodporují všechny konfigurační vlastnosti. Pro lepší typovou bezpečnost použijte v konfiguračních souborech projektu metodu defineProject místo defineConfig:

ts
// @errors: 2769
import { defineProject } from 'vitest/config';

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" není podporováno v konfiguraci projektu,
    // takže se zobrazí chyba
    reporters: ['json'],
  },
});

Spouštění testů ​

Pro spuštění testů uvnitř pracovního prostoru definujte skript ve svém kořenovém package.json:

json
{
  "scripts": {
    "test": "vitest"
  }
}

Nyní můžete spouštět testy pomocí svého správce balíčků:

bash
npm run test
bash
yarn test
bash
pnpm run test
bash
bun test

Pokud potřebujete spustit testy pouze pro jeden projekt, použijte přepínač CLI --project:

bash
npm run test --project e2e
bash
yarn test --project e2e
bash
pnpm run test --project e2e
bash
bun test --project e2e

TIP

Přepínač CLI --project lze použít vícekrát k filtrování několika projektů:

bash
npm run test --project e2e --project unit
bash
yarn test --project e2e --project unit
bash
pnpm run test --project e2e --project unit
bash
bun test --project e2e --project unit

Konfigurace ​

Žádná z konfiguračních možností není zděděna z konfiguračního souboru na kořenové úrovni. Můžete vytvořit sdílený konfigurační soubor a sloučit jej s konfigurací projektu sami:

ts
import { defineProject, mergeConfig } from 'vitest/config';
import configShared from '../vitest.shared.js';

export default mergeConfig(
  configShared,
  defineProject({
    test: {
      environment: 'jsdom',
    },
  })
);

Na úrovni defineWorkspace můžete použít volbu extends pro dědění z vaší konfigurace na kořenové úrovni. Všechny možnosti budou sloučeny do jedné.

ts
import { defineWorkspace } from 'vitest/config';

export default defineWorkspace([
  {
    extends: './vitest.config.ts',
    test: {
      name: 'unit',
      include: ['**/*.unit.test.ts'],
    },
  },
  {
    extends: './vitest.config.ts',
    test: {
      name: 'integration',
      include: ['**/*.integration.test.ts'],
    },
  },
]);

Některé konfigurační možnosti nejsou povoleny v konfiguraci projektu. Nejvýznamnější jsou:

  • coverage: pokrytí se počítá pro celý pracovní prostor
  • reporters: podporovány jsou pouze reportéry na kořenové úrovni
  • resolveSnapshotPath: bere se v úvahu pouze resolver na kořenové úrovni
  • všechny ostatní možnosti, které neovlivňují spouštěče testů

TIP

Všechny konfigurační možnosti, které nejsou podporovány v konfiguraci projektu, jsou označeny znakem * v průvodci "Konfigurace".

Pager
Předchozí stránkaFunkce
Další stránkaRozhraní příkazového řádku

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors