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
vite
csomagot (á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-v8
vagy@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'); // 3000
A 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);
}