Skip to content
Vitest 2
Main Navigation PrůvodceAPIKonfiguraceRežim prohlížečePokročilý
2.1.9
1.6.1
0.34.6

čeština

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

čeština

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

Vzhled

Sidebar Navigation

Node API

Test Runner (Spouštěč testů)

Metadata úloh

Rozšíření reportérů

Vlastní pool

Na této stránce

Node API ​

WARNING

Vitest nabízí experimentální soukromé API. Zásadní změny nemusí dodržovat SemVer, proto doporučujeme při jeho používání fixovat verzi Vitest.

startVitest ​

Testy Vitest můžete spustit pomocí Node API:

js
import { startVitest } from 'vitest/node';

const vitest = await startVitest('test');

await vitest?.close();

Funkce startVitest vrací instanci Vitest, pokud je možné testy spustit. Vrací undefined, pokud nastane některá z následujících situací:

  • Vitest nenalezl balíček vite (obvykle se instaluje s Vitest).
  • Pokud je povoleno pokrytí kódu (coverage) a režim běhu je "test", ale balíček pro pokrytí kódu není nainstalován (@vitest/coverage-v8 nebo @vitest/coverage-istanbul).
  • Pokud není nainstalován balíček pro prostředí (jsdom/happy-dom/@edge-runtime/vm).

Pokud je vráceno undefined nebo testy během spuštění selžou, Vitest nastaví process.exitCode na 1.

Pokud není povolen režim sledování testů (watch mode), Vitest provede metodu close.

Pokud je povolen režim sledování testů a terminál podporuje TTY, Vitest zaregistruje klávesové zkratky v konzoli.

Jako druhý argument můžete předat pole filtrů. Vitest spustí pouze testy, které obsahují alespoň jeden z předaných řetězců v cestě k souboru.

Kromě toho můžete použít třetí argument k předání argumentů příkazové řádky (CLI), které mají přednost před nastavením v konfiguraci testů.

Alternativně můžete předat kompletní konfiguraci Vite jako čtvrtý argument, který bude mít přednost před jakýmikoli jinými uživatelsky definovanými možnostmi.

Po spuštění testů můžete získat výsledky z API state.getFiles:

ts
const vitest = await startVitest('test');

console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]

Od verze Vitest 2.1 se doporučuje používat API "Reported Tasks" (Hlášené úlohy) společně s API state.getFiles. V budoucnu bude Vitest vracet tyto objekty přímo:

ts
const vitest = await startVitest('test');

const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);

createVitest ​

Můžete si vytvořit instanci Vitest sami pomocí funkce createVitest. Vrací stejnou instanci Vitest jako startVitest, ale nespouští testy a neověřuje, zda jsou nainstalované požadované balíčky.

js
import { createVitest } from 'vitest/node';

const vitest = await createVitest('test', {
  watch: false,
});

parseCLI ​

Tuto metodu můžete použít k parsování argumentů příkazové řádky (CLI). Přijímá řetězec (kde jsou argumenty odděleny jednou mezerou) nebo pole řetězců argumentů CLI ve stejném formátu, jaký používá Vitest CLI. Vrací filtr a options, které pak můžete předat metodám createVitest nebo startVitest.

ts
import { parseCLI } from 'vitest/node';

parseCLI('vitest ./files.ts --coverage --browser=chrome');

Vitest ​

Instance Vitest vyžaduje aktuální režim testování. Může to být:

  • test při spouštění runtime testů.
  • benchmark při spouštění benchmarků.

mode ​

test ​

Testovací režim volá pouze funkce uvnitř test nebo it a vyvolá výjimku při nalezení bench. Tento režim využívá nastavení include a exclude v konfiguraci k nalezení testovacích souborů.

benchmark ​

Benchmark režim volá funkce bench a vyvolá výjimku, pokud narazí na test nebo it. Tento režim využívá nastavení benchmark.include a benchmark.exclude v konfiguraci k nalezení benchmark souborů.

start ​

Testy nebo benchmarky můžete spustit pomocí metody start. Můžete předat pole řetězců pro filtrování testovacích souborů.

provide ​

Vitest zpřístupňuje metodu provide, což je zkratka pro vitest.getCoreWorkspaceProject().provide. Touto metodou můžete předávat hodnoty z hlavního vlákna do testů. Všechny hodnoty jsou před uložením zkontrolovány pomocí structuredClone, samotné hodnoty se ale neklonují.

Pro získání hodnot v testu, musíte importovat metodu inject z vitest entrypoint:

ts
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000

Pro vyšší typovou bezpečnost doporučujeme rozšířit typ ProvidedContext:

ts
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

Technicky vzato je provide metodou WorkspaceProject, takže je omezena na konkrétní projekt. Všechny projekty ale dědí hodnoty z hlavního projektu, díky čemuž je vitest.provide univerzální metodou předávání hodnot do testů.

TIP

Tato metoda je také k dispozici pro globální nastavovací soubory pro případy, kdy nechcete používat veřejné API:

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
Další stránkaTest Runner (Spouštěč testů)

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

https://v2.vitest.dev/advanced/api

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors