Haladó API
WARNING
Ez az útmutató a haladó API-kat sorolja fel a tesztek Node.js szkriptekkel történő futtatásához. Ha Ön csak teszteket szeretne futtatni, valószínűleg nincs szüksége rájuk. Elsősorban könyvtárfejlesztők használják.
Bármely függvényt importálhat a vitest/node belépési pontból.
startVitest
function startVitest(
mode: VitestRunMode,
cliFilters: string[] = [],
options: CliOptions = {},
viteOverrides?: ViteUserConfig,
vitestOptions?: VitestOptions
): Promise<Vitest>;A Vitest teszteket elindíthatja a Node API segítségével:
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest.close();A startVitest függvény egy Vitest példányt ad vissza, ha a tesztek elindíthatók.
Ha a figyelő mód nincs engedélyezve, a Vitest automatikusan meghívja a close metódust.
Ha a figyelő mód engedélyezve van, és a terminál támogatja a TTY-t, a Vitest konzol gyorsbillentyűket regisztrál.
Második argumentumként átadhat egy szűrőlistát. A Vitest csak azokat a teszteket futtatja, amelyek fájlútvonala legalább az egyik átadott sztringet tartalmazza.
Ezenkívül a harmadik argumentummal CLI paramétereket adhat át, amelyek felülírják a tesztkonfigurációs opciókat. Alternatívaként a teljes Vite konfigurációt is átadhatja negyedik argumentumként, amely felülírja az összes többi felhasználó által definiált opciót.
A tesztek futtatása után az eredményeket a state.getTestModules API segítségével kaphatja meg:
import type { TestModule } from 'vitest/node';
const vitest = await startVitest('test');
console.log(vitest.state.getTestModules()); // [TestModule]TIP
A "Tesztek futtatása" útmutató tartalmaz egy használati példát.
createVitest
function createVitest(
mode: VitestRunMode,
options: CliOptions,
viteOverrides: ViteUserConfig = {},
vitestOptions: VitestOptions = {}
): Promise<Vitest>;Vitest példányt hozhat létre a createVitest függvény használatával. Ugyanazt a Vitest példányt adja vissza, mint a startVitest, de nem indítja el a teszteket, és nem ellenőrzi a telepített csomagokat.
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});TIP
A "Tesztek futtatása" útmutató tartalmaz egy használati példát.
resolveConfig
function resolveConfig(
options: UserConfig = {},
viteOverrides: ViteUserConfig = {}
): Promise<{
vitestConfig: ResolvedConfig;
viteConfig: ResolvedViteConfig;
}>;Ez a metódus a megadott paraméterekkel oldja fel a konfigurációt. Ha nincsenek paraméterek megadva, a root értéke process.cwd() lesz.
import { resolveConfig } from 'vitest/node';
// a vitestConfig csak feloldott "test" tulajdonságokat tartalmaz
const { vitestConfig, viteConfig } = await resolveConfig({
mode: 'custom',
configFile: false,
resolve: {
conditions: ['custom'],
},
test: {
setupFiles: ['/my-setup-file.js'],
pool: 'threads',
},
});INFO
A Vite createServer működése miatt a Vitestnek a plugin configResolved hookjában kell feloldania a konfigurációt. Ezért ezt a metódust valójában nem használják a belső működés során, és kizárólag nyilvános API-ként van közzétéve.
Ha a konfigurációt átadja a startVitest vagy createVitest API-knak, a Vitest akkor is újra feloldja a konfigurációt.
WARNING
A resolveConfig nem oldja fel a projects konfigurációkat. A projektek konfigurációinak feloldásához a Vitestnek egy futó Vite szerverre van szüksége.
Vegye figyelembe azt is, hogy a viteConfig.test nem lesz teljesen feloldva. Ha Vitest konfigurációra van szüksége, használja helyette a vitestConfig-ot.
parseCLI
function parseCLI(
argv: string | string[],
config: CliParseOptions = {}
): {
filter: string[];
options: CliOptions;
};Ezt a metódust használhatja a CLI argumentumok elemzésére. Elfogad egy sztringet (ahol az argumentumok egyetlen szóközzel vannak elválasztva) vagy egy sztring tömböt CLI argumentumokból, ugyanabban a formátumban, amelyet a Vitest CLI használ. Egy szűrőt és options-t ad vissza, amelyeket később átadhat a createVitest vagy startVitest metódusoknak.
import { parseCLI } from 'vitest/node';
const result = parseCLI('vitest ./files.ts --coverage --browser=chrome');
result.options;
// {
// coverage: { enabled: true },
// browser: { name: 'chrome', enabled: true }
// }
result.filter;
// ['./files.ts']