Skip to content
Vitest 1
Main Navigation PrůvodceAPIKonfiguracePokročilý
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

Průvodce

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

Režim prohlížeče

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

Zvýšení výkonu

API

Referenční příručka k Test API

Mock funkce

Vi

expect

expectTypeOf

assert

assertType

Konfigurace

Správa konfiguračního souboru pro Vitest

Konfigurace Vitest

Na této stránce

Workspace ​

Ukázkový projekt

GitHub - Spustit online

Vitest nativně podporuje monorepozitáře pomocí konfiguračního souboru workspace. Workspace umožňuje definovat nastavení pro jednotlivé projekty v rámci monorepozitáře.

Definování workspace ​

Workspace vyžaduje soubor vitest.workspace nebo vitest.projects v kořenovém adresáři (obvykle ve stejné složce jako hlavní konfigurační soubor Vitest, pokud jej používáte). Vitest podporuje koncovky ts, js a json pro tento soubor.

Konfigurační soubor workspace by měl exportovat pole souborů nebo globálních vzorů, které odkazují na jednotlivé projekty. Například, pokud máte složku packages obsahující vaše projekty, můžete definovat workspace takto:

ts
export default ['packages/*'];

Vitest bude považovat každou složku v packages za samostatný projekt, i když neobsahuje vlastní konfigurační soubor.

WARNING

Vitest nebude považovat kořenovou konfiguraci za projekt workspace (a tedy nespustí testy definované v include), pokud není explicitně zahrnuta v konfiguraci workspace.

Projekty můžete odkazovat i pomocí jejich konfiguračních souborů:

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

Tento vzor zahrne pouze projekty s konfiguračním souborem vitest.config, který má před příponou souboru uvedeno e2e nebo unit.

WARNING

Pokud odkazujete na soubory pomocí glob vzorů, ujistěte se, že název konfiguračního souboru začíná na vite.config nebo vitest.config. Jinak ho Vitest ignoruje.

Projekty lze definovat i pomocí inline konfigurace. Soubor workspace podporuje kombinaci obou syntaxí.

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

// defineWorkspace poskytuje typovou nápovědu
export default defineWorkspace([
  'packages/*',
  {
    // "extends" umožňuje sloučení s jinou konfigurací
    extends: './vite.config.js',
    test: {
      include: ['tests/**/*.{browser}.test.{ts,js}'],
      // při použití inline konfigurace 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 unikátní názvy. V opačném případě Vitest vyvolá chybu. Pokud název v inline konfiguraci nezadáte, Vitest automaticky přiřadí číselný identifikátor. Pokud název nezadáte v konfiguraci projektu definované pomocí glob syntaxe, Vitest použije název adresáře.

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

json
["packages/*"]

Projekty workspace nepodporují všechny vlastnosti konfigurace. Pro lepší typovou bezpečnost doporučujeme používat metodu defineProject namísto defineConfig v konfiguračních souborech projektů:

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

export default defineProject({
  test: {
    environment: 'jsdom',
    // "reporters" není v konfiguraci projektu podporován,
    // takže dojde k chybě
    reporters: ['json'],
  },
});

Spouštění testů ​

Pro spuštění testů v rámci workspace definujte skript ve svém kořenovém package.json:

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

Testy pak můžete spustit pomocí 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 konkrétní projekt, použijte přepínač --project v CLI:

bash
npm run test --project e2e

TIP

Přepínač --project lze použít opakovaně pro filtrování více projektů:

bash
npm run test --project e2e --project unit

Konfigurace ​

Žádná z možností konfigurace se nedědí z kořenového konfiguračního souboru do projektů. Můžete vytvořit sdílený konfigurační soubor a explicitně ho sloučit s konfigurací projektu:

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

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

Některé možnosti konfigurace nejsou v konfiguraci projektu povoleny. Konkrétně:

  • coverage: pokrytí kódu se počítá pro celý workspace
  • reporters: podporováni jsou pouze reportéři definovaní na kořenové úrovni
  • resolveSnapshotPath: používá se pouze resolver na kořenové úrovni
  • všechny ostatní možnosti, které nemají vliv na běh testů

TIP

Všechny možnosti konfigurace, které nejsou podporovány v konfiguraci projektu, jsou na stránce "Config" označeny značkou *.

Pokrytí kódu (Coverage) ​

Pokrytí kódu pro projekty workspace funguje automaticky. Pokud máte povolenou možnost all a používáte nekonvenční přípony souborů v některých projektech, budete potřebovat plugin, který tyto přípony zpracuje ve vašem kořenovém konfiguračním souboru.

Například, pokud máte balíček, který používá Vue soubory a má vlastní konfigurační soubor, ale některé z těchto souborů nejsou importovány v testech, pokrytí kódu selže při analýze nepoužívaných souborů, protože se spoléhá na kořenovou konfiguraci, nikoli na konfiguraci projektu.

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors