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);
}