Skip to content
Vitest 3
Main Navigation Útmutató & APIKonfigurációBöngésző módHaladó API
3.2.0
2.1.9
1.6.1
0.34.6

magyar

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

magyar

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

Megjelenés

Sidebar Navigation

Bevezetés

Miért Vitest

Első lépések

Jellemzők

Vitest konfigurálása

API

Teszt API Referencia

Mock Függvények

Vi

expect

expectTypeOf

assert

assertType

Útmutató

Parancssori felület

Teszt szűrés

Tesztprojektek

Jelentéskészítők (Reporters)

Kódlefedettség

Snapshot

Mockolás

Párhuzamos végrehajtás

Típusok Tesztelése

Vitest UI

Forráskódba ágyazott tesztelés

Tesztkörnyezet

Teszt annotációk

Tesztkörnyezet

Matcherek kiterjesztése

IDE Integrációk

Hibakeresés

Gyakori hibák

Migrációs útmutató

Migrálás a Vitest 3.0-ra

Migrálás Jesstről

Teljesítmény

Teszt teljesítmény profilozása

Teljesítmény javítása

Böngésző üzemmód

Haladó API

Összehasonlítás más tesztfuttatókkal

Ezen az oldalon

Tesztprojektek ​

Minta projekt

GitHub - Online lejátszás

WARNING

Ez a funkció korábban workspace néven volt ismert. A workspace elavult a 3.2-es verzió óta, és felváltotta a projects konfiguráció. Funkcionálisan megegyeznek.

A Vitest lehetővé teszi több projektkonfiguráció definiálását egyetlen Vitest folyamaton belül. Ez a funkció különösen hasznos monorepo beállításokban, de használható tesztek futtatására különböző konfigurációkkal is, például resolve.alias, plugins, vagy test.browser beállításokkal, és még sok mással.

Projektek definiálása ​

A projekteket a gyökér konfigurációban definiálhatja:

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

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

A projektkonfigurációk lehetnek beágyazott konfigurációk, fájlokra mutató hivatkozások vagy glob minták, amelyek a projektekre hivatkoznak. Például, ha van egy packages nevű mappája, amely tartalmazza a projektjeit, definiálhat egy tömböt a gyökér Vitest konfigurációjában:

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

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

A Vitest minden mappát a packages mappában külön projektként kezel, még akkor is, ha nincs benne konfigurációs fájl. Ha ez a glob minta bármilyen fájlra érvényes, az Vitest konfigurációnak minősül, még akkor is, ha nincs vitest a nevében, vagy ismeretlen fájlkiterjesztéssel rendelkezik.

WARNING

A Vitest nem kezeli a gyökér vitest.config fájlt projektként, kivéve ha explicit módon meg van adva a konfigurációban. Következésképpen a gyökérkonfiguráció csak a globális opciókat befolyásolja, mint például a reporters és a coverage. Ne feledje, hogy a Vitest mindig futtat bizonyos plugin hookokat – mint például az apply, config, configResolved vagy configureServer – amelyek a gyökér konfigurációs fájlban vannak megadva. A Vitest ugyanazokat a pluginokat használja a globális beállítások és az egyéni lefedettségi szolgáltatók futtatásához is.

A projektekre a konfigurációs fájljaikkal is hivatkozhatunk:

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

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

Ez a minta csak azokat a projekteket fogja tartalmazni, amelyeknek van vitest.config fájljuk, és az e2e vagy unit szerepel a kiterjesztés előtt.

A projekteket beágyazott konfigurációval is definiálhatja. A konfiguráció mindkét szintaxist egyszerre támogatja.

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

export default defineConfig({
  test: {
    projects: [
      // illeszkedik minden mappára és fájlra a `packages` mappán belül
      'packages/*',
      {
        // az "extends: true" opcióval örökölheti a gyökérkonfiguráció opcióit
        extends: true,
        test: {
          include: ['tests/**/*.{browser}.test.{ts,js}'],
          // beágyazott konfigurációk esetén név megadása javasolt
          name: 'happy-dom',
          environment: 'happy-dom',
        },
      },
      {
        test: {
          include: ['tests/**/*.{node}.test.{ts,js}'],
          // a címke színe módosítható
          name: { label: 'node', color: 'green' },
          environment: 'node',
        },
      },
    ],
  },
});

WARNING

Minden projektnek egyedi névvel kell rendelkeznie; ellenkező esetben a Vitest hibát dob. Ha a beágyazott konfigurációban nincs megadva név, a Vitest egy számot rendel hozzá. A glob szintaxissal definiált projektkonfigurációk esetén a Vitest alapértelmezés szerint a legközelebbi package.json fájlban található "name" tulajdonságot használja, vagy ha nincs ilyen, akkor a mappa nevét.

Nem minden konfigurációs tulajdonság használható projektekben. A jobb típusbiztonság érdekében használja a defineProject metódust a defineConfig helyett a projektkonfigurációs fájlokban:

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

export default defineProject({
  test: {
    environment: 'jsdom',
    // a "reporters" nem támogatott projektkonfigurációban,
    // ezért hibát fog mutatni
    reporters: ['json'],
  },
});

Tesztek futtatása ​

A tesztek futtatásához határozzon meg egy szkriptet a gyökér package.json fájlban:

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

Most a tesztek futtathatók a csomagkezelő segítségével:

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

Ha csak egyetlen projekten belül szeretne teszteket futtatni, használja a --project CLI opciót:

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

TIP

A --project CLI opció többször is alkalmazható több projekt szűrésére:

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

Konfiguráció ​

Egyetlen konfigurációs opció sem öröklődik át a gyökérszintű konfigurációs fájlból. Létrehozhat egy megosztott konfigurációs fájlt, és egyesítheti azt a projektkonfigurációval:

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

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

Ezenkívül alkalmazhatja az extends opciót a gyökérszintű konfigurációból való örökléshez. Minden opció egyesül.

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

export default defineConfig({
  plugins: [react()],
  test: {
    pool: 'threads',
    projects: [
      {
        // örökli az opciókat ebből a konfigurációból, mint a pluginok és a pool
        extends: true,
        test: {
          name: 'unit',
          include: ['**/*.unit.test.ts'],
        },
      },
      {
        // nem örököl semmilyen opciót ebből a konfigurációból
        // ez az alapértelmezett viselkedés
        extends: false,
        test: {
          name: 'integration',
          include: ['**/*.integration.test.ts'],
        },
      },
    ],
  },
});

Nem támogatott opciók

Néhány konfigurációs opció nem megengedett projektkonfigurációban. A legfontosabbak:

  • coverage: a lefedettség az egész folyamatra történik
  • reporters: csak a gyökérszintű riporterek támogatottak
  • resolveSnapshotPath: csak a gyökérszintű feloldó érvényesül
  • minden más opció, amely nem befolyásolja a tesztfuttatókat

Minden olyan konfigurációs opció, amely nem támogatott projektkonfiguráción belül, * jellel van megjelölve a "Konfiguráció" útmutatóban. Ezeket egyszer kell definiálni a gyökér konfigurációs fájlban.

Pager
Előző oldalTeszt szűrés
Következő oldalJelentéskészítők (Reporters)

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team

https://vitest.dev/guide/projects

A MIT licenc alapján kiadva.

Copyright (c) 2021-Present Vitest Team