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í projekty ​

Ukázkový projekt

GitHub - Spustit online

WARNING

Tato funkce je také známá jako workspace. workspace je od verze 3.2 zastaralý a nahrazen konfigurací projects. Funkčně jsou stejné.

Vitest umožňuje definovat více konfigurací projektů v rámci jednoho procesu Vitest. Tato funkce je obzvláště užitečná pro nastavení monorepo, ale lze ji také použít k provádění testů s různými konfiguracemi, jako jsou resolve.alias, plugins nebo test.browser a další.

Definování projektů ​

Projekty můžete definovat ve svém hlavním konfiguračním souboru:

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

export default defineConfig({
  test: {
    projects: ['packages/*'],
  },
});

Konfigurace projektů mohou být inline konfigurace, soubory nebo glob vzory, které odkazují na vaše projekty. Například, pokud máte složku packages, která obsahuje vaše projekty, můžete definovat pole ve svém hlavním konfiguračním souboru Vitest:

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

export default defineConfig({
  test: {
    projects: ['packages/*'],
  },
});

Vitest bude každou složku v packages považovat za samostatný projekt, i když nemá konfigurační soubor. Pokud tento glob vzor odpovídá jakémukoli souboru, bude považován za konfigurační soubor Vitest, i když v názvu neobsahuje vitest nebo má neobvyklou příponu.

WARNING

Vitest nepovažuje hlavní soubor vitest.config za projekt, pokud není explicitně specifikován v konfiguraci. V důsledku toho hlavní konfigurace ovlivňuje pouze globální možnosti, jako jsou reporters a coverage. Vitest vždy spouští určité pluginové hooky, jako apply, config, configResolved nebo configureServer, specifikované v hlavním konfiguračním souboru. Vitest také používá stejné pluginy k provádění globálních nastavení a vlastního poskytovatele pokrytí.

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

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

export default defineConfig({
  test: {
    projects: ['packages/*/vitest.config.{e2e,unit}.ts'],
  },
});

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

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

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

export default defineConfig({
  test: {
    projects: [
      // odpovídá každé složce a souboru uvnitř složky `packages`
      'packages/*',
      {
        // přidejte "extends: true" pro zdědění možností z hlavní konfigurace
        extends: true,
        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}'],
          // barva popisku názvu může být změněna
          name: { label: 'node', color: 'green' },
          environment: 'node',
        },
      },
    ],
  },
});

WARNING

Všechny projekty musí mít jedinečné názvy; jinak Vitest vyvolá chybu. Pokud název není uveden v inline konfiguraci, Vitest přiřadí číslo. 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.

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

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ů definujte skript ve svém hlavním package.json:

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

Nyní lze testy spouštět pomocí vašeho správce balíčků:

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

Pokud potřebujete spustit testy pouze v rámci jednoho projektu, použijte příkaz CLI --project:

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

TIP

Příkaz 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 run test --project e2e --project unit

Konfigurace ​

Žádné konfigurační možnosti nejsou zděděny z konfiguračního souboru na hlavní ú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',
    },
  })
);

Dále můžete použít možnost extends pro zdědění z vaší konfigurace na hlavní úrovni. Všechna nastavení budou sloučena.

ts
import { defineConfig } from 'vitest/config';
import react from '@vitejs/plugin-react';

export default defineConfig({
  plugins: [react()],
  test: {
    pool: 'threads',
    projects: [
      {
        // zdědí možnosti z této konfigurace, jako jsou pluginy a pool
        extends: true,
        test: {
          name: 'unit',
          include: ['**/*.unit.test.ts'],
        },
      },
      {
        // nezdědí žádné možnosti z této konfigurace
        // toto je výchozí chování
        extends: false,
        test: {
          name: 'integration',
          include: ['**/*.integration.test.ts'],
        },
      },
    ],
  },
});

Nepodporované možnosti

Některé konfigurační volby nejsou povoleny v projektové konfiguraci. Nejvýznamnější jsou:

  • coverage: pokrytí se provádí pro celý proces
  • reporters: podporovány jsou pouze reportéry na hlavní úrovni
  • resolveSnapshotPath: respektován je pouze resolver na hlavní úrovni
  • všechny ostatní možnosti, které neovlivňují testovací běžce

Všechny konfigurační možnosti, které nejsou podporovány v konfiguraci projektu, jsou označeny znakem * v průvodci "Konfigurace". Musí být definovány jednou v hlavním konfiguračním souboru.

Pager
Předchozí stránkaFiltrování testů
Další stránkaGenerátory zpráv

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/projects

Vydáno pod licencí MIT.

Copyright (c) 2021-Present Vitest Team