Node API
WARNING
Vitest は実験段階のプライベート API を公開しています。破壊的変更が SemVer に従わない可能性があるため、使用する際は Vitest のバージョンを固定してください。
startVitest
Node API を使用して Vitest のテスト実行を開始できます。
import { startVitest } from 'vitest/node';
const vitest = await startVitest('test');
await vitest?.close();startVitest 関数は、テストを開始できる場合に Vitest インスタンスを返します。次のいずれかの条件に該当する場合、undefined を返します。
- Vitest が
viteパッケージを見つけられなかった場合 (通常は Vitest と一緒にインストールされます)。 - カバレッジが有効で、実行モードが "test" の場合に、カバレッジパッケージがインストールされていない場合 (
@vitest/coverage-v8または@vitest/coverage-istanbul)。 - 環境パッケージがインストールされていない場合 (
jsdom/happy-dom/@edge-runtime/vm)。
undefined が返された場合、またはテスト実行中にエラーが発生した場合、Vitest は process.exitCode を 1 に設定します。
ウォッチモードが無効な場合、Vitest は close メソッドを呼び出します。
ウォッチモードが有効で、ターミナルが TTY をサポートしている場合、Vitest はコンソールのショートカットを登録します。
フィルターリストを第2引数として渡すことで、特定のテストのみを実行できます。Vitest は、渡された文字列の少なくとも 1 つをファイルパスに含むテストのみを実行します。
さらに、3 番目の引数を使用して CLI 引数を渡すことで、テスト設定オプションを上書きできます。
または、4 番目の引数として完全な Vite 構成を渡すことも可能です。この場合、他のユーザー定義オプションよりも優先されます。
テストの実行後、state.getFiles API から結果を取得できます。
const vitest = await startVitest('test');
console.log(vitest.state.getFiles()); // [{ type: 'file', ... }]Vitest 2.1 以降では、"Reported Tasks" API を state.getFiles と共に使用することをお勧めします。将来的には、Vitest はこれらのオブジェクトを直接返す予定です。
const vitest = await startVitest('test');
const [fileTask] = vitest.state.getFiles();
const testFile = vitest.state.getReportedEntity(fileTask);createVitest
createVitest 関数を使用すると、Vitest インスタンスを自分で作成できます。これは startVitest と同じ Vitest インスタンスを返しますが、テストを開始せず、インストールされているパッケージの検証も行いません。
import { createVitest } from 'vitest/node';
const vitest = await createVitest('test', {
watch: false,
});parseCLI
このメソッドを使用して、CLI 引数を解析できます。文字列 (引数は単一のスペースで区切られます) または Vitest CLI が使用するのと同じ形式の CLI 引数の文字列配列を受け入れます。解析結果として、フィルタと options が返され、これらを後で createVitest または startVitest メソッドに渡すことができます。
import { parseCLI } from 'vitest/node';
parseCLI('vitest ./files.ts --coverage --browser=chrome');Vitest
Vitest インスタンスは、現在のテストモードを保持します。これは次のいずれかになります。
- ランタイムテスト実行時は
test - ベンチマーク実行時は
benchmark
mode
test
テストモードでは test または it 内の関数のみが実行され、bench が検出されるとエラーが発生します。このモードでは、構成の include および exclude オプションを使用してテストファイルを検索します。
benchmark
ベンチマークモードでは bench 関数が実行され、test または it が検出されるとエラーが発生します。このモードでは、構成の benchmark.include および benchmark.exclude オプションを使用してベンチマークファイルを検索します。
start
start メソッドを使用して、テストまたはベンチマークの実行を開始できます。文字列配列を渡すことで、テストファイルをフィルタリングできます。
provide
Vitest は、vitest.getCoreWorkspaceProject().provide の省略形である provide メソッドを公開しています。このメソッドを使用すると、メインスレッドからテストに値を渡すことができます。すべての値は保存される前に structuredClone でチェックされますが、値自体は複製されません。
テストで値を受信するには、vitest エントリポイントから inject メソッドをインポートする必要があります。
import { inject } from 'vitest';
const port = inject('wsPort'); // 3000型安全性を向上させるために、ProvidedContext の型を拡張することをお勧めします。
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
厳密には、provide は WorkspaceProject のメソッドであるため、特定のプロジェクトに限定されます。ただし、すべてのプロジェクトはコアプロジェクトから値を継承するため、vitest.provide はテストに値を渡すための一般的な方法となります。
TIP
このメソッドは、パブリック API を使用したくない場合に、グローバルセットアップファイル でも使用できます。
export default function setup({ provide }) {
provide('wsPort', 3000);
}