Node API
WARNING
A Vitest kísérleti, nem nyilvános API-t tesz elérhetővé. A nem visszamenőlegesen kompatibilis változások nem feltétlenül követik a SemVer szabályait, ezért használatkor rögzítse a Vitest verzióját.
startVitest
A Vitest teszteket a Node API segítségével indíthatja el:
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, amennyiben a tesztek elindíthatóak. undefined értékkel tér vissza, ha az alábbi feltételek bármelyike teljesül:
- A Vitest nem találta a
vitecsomagot (általában a Vitest-tel együtt települ). - Ha a kódlefedettség engedélyezve van, és a futtatási mód "test", de a kódlefedettség csomag nincs telepítve (
@vitest/coverage-v8vagy@vitest/coverage-istanbul). - Ha a környezeti csomag nincs telepítve (
jsdom/happy-dom/@edge-runtime/vm).
Ha undefined értéket ad vissza, vagy a tesztek sikertelenek a futtatás során, a Vitest a process.exitCode értékét 1-re állítja.
Ha a figyelő mód nincs engedélyezve, a Vitest meghívja a close metódust.
Amennyiben a figyelő mód engedélyezve van, és a terminál támogatja a TTY-t, a Vitest regisztrálja a konzol parancsikonjait.
A szűrők listáját a második argumentumként adhatja át. A Vitest csak azokat a teszteket futtatja, amelyek fájlútvonalában legalább egyezés van az átadott karakterláncok közül.
Ezenkívül a harmadik argumentummal átadhat CLI argumentumokat, amelyek felülírhatják a tesztkonfigurációs beállításokat.
Alternatívaként a teljes Vite konfigurációt is átadhatja negyedik argumentumként, amely elsőbbséget élvez minden más felhasználó által definiált beállítással szemben.
A tesztek futtatása után az eredményeket a state.getFiles API-ból kaphatja meg:
const vitest = await startVitest('test');
console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]A Vitest 2.1-es verziója óta ajánlott a "Jelentett feladatok" API használata a state.getFiles API mellett. A jövőben a Vitest ezeket az objektumokat közvetlenül adja vissza:
const vitest = await startVitest('test');
const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);createVitest
A createVitest függvénnyel saját maga hozhat létre Vitest példányt. 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 csomagok meglétét.
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});parseCLI
Ezzel a módszerrel elemezheti a CLI argumentumokat. Elfogad egy karakterláncot (ahol az argumentumokat egyetlen szóköz választja el) vagy egy karakterlánc tömböt a CLI argumentumokból, ugyanabban a formátumban, amelyet a Vitest CLI használ. Egy szűrőt és options beállításokat ad vissza, amelyeket később átadhat a createVitest vagy a startVitest metódusoknak.
import { parseCLI } from 'vitest/node';
parseCLI('vitest ./files.ts --coverage --browser=chrome');Vitest
A Vitest példány számára szükséges az aktuális teszt mód megadása. Ez lehet:
test: a futásidejű tesztek futtatásakorbenchmark: a benchmark tesztek futtatásakor
mode
test
A teszt mód csak a test vagy it belsejében lévő függvényeket hívja meg, és hibát dob, ha bench függvényt talál. Ez a mód a konfigurációban lévő include és exclude beállításokat használja a tesztfájlok megkereséséhez.
benchmark
A benchmark mód a bench függvényeket hívja meg, és hibát dob, ha test vagy it függvényt talál. Ez a mód a konfigurációban lévő benchmark.include és benchmark.exclude beállításokat használja a benchmark fájlok megkereséséhez.
start
A start metódussal indíthatja el a teszteket vagy a benchmark teszteket. A tesztfájlok szűréséhez átadhat egy karakterlánc tömböt.
provide
A Vitest elérhetővé teszi a provide metódust, amely a vitest.getCoreWorkspaceProject().provide metódus rövidítése. Ezzel a módszerrel értékeket adhat át a fő szálról a tesztekbe. A structuredClone minden értéket ellenőriz, mielőtt tárolásra kerülne, de maguk az értékek nem kerülnek klónozásra.
Az értékek fogadásához a tesztben importálnia kell az inject metódust a vitest belépési pontjára:
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000A nagyobb típusbiztonság érdekében javasoljuk a ProvidedContext típusának bővítését:
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});
vitest.provide('wsPort', 3000);
declare module 'vitest' {
export interface ProvidedContext {
wsPort: number;
}
}WARNING
Technikailag a provide a WorkspaceProject metódusa, ezért az a projektre korlátozódik. Azonban minden projekt örökli az értékeket a központi projektből, ezáltal a vitest.provide metódus egy univerzális módszer az értékek tesztekbe való átadására.
TIP
Ez a módszer a globális beállítási fájlokban is elérhető abban az esetben, ha nem kívánja a nyilvános API-t használni:
export default function setup({ provide }) {
provide('wsPort', 3000);
}