Tesztprojektek
Minta projekt
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:
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:
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:
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.
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:
// @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:
{
"scripts": {
"test": "vitest"
}
}
Most a tesztek futtathatók a csomagkezelő segítségével:
npm run test
yarn test
pnpm run test
bun run test
Ha csak egyetlen projekten belül szeretne teszteket futtatni, használja a --project
CLI opciót:
npm run test --project e2e
yarn test --project e2e
pnpm run test --project e2e
bun run test --project e2e
TIP
A --project
CLI opció többször is alkalmazható több projekt szűrésére:
npm run test --project e2e --project unit
yarn test --project e2e --project unit
pnpm run test --project e2e --project unit
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:
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.
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énikreporters
: csak a gyökérszintű riporterek támogatottakresolveSnapshotPath
: 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.