Skip to content
Vitest 2
Main Navigation ガイドAPI設定ブラウザモード高度な
2.1.9
1.6.1
0.34.6

日本語

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

日本語

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

外観

Sidebar Navigation

Node API

テストランナー

タスクメタデータ

レポーターの拡張方法

カスタムプール

このページの内容

Node API ​

WARNING

Vitest は実験段階のプライベート API を公開しています。破壊的変更が SemVer に従わない可能性があるため、使用する際は Vitest のバージョンを固定してください。

startVitest ​

Node API を使用して Vitest のテスト実行を開始できます。

js
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 から結果を取得できます。

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

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

Vitest 2.1 以降では、"Reported Tasks" API を state.getFiles と共に使用することをお勧めします。将来的には、Vitest はこれらのオブジェクトを直接返す予定です。

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

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

createVitest ​

createVitest 関数を使用すると、Vitest インスタンスを自分で作成できます。これは startVitest と同じ Vitest インスタンスを返しますが、テストを開始せず、インストールされているパッケージの検証も行いません。

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

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

parseCLI ​

このメソッドを使用して、CLI 引数を解析できます。文字列 (引数は単一のスペースで区切られます) または Vitest CLI が使用するのと同じ形式の CLI 引数の文字列配列を受け入れます。解析結果として、フィルタと options が返され、これらを後で createVitest または startVitest メソッドに渡すことができます。

ts
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 メソッドをインポートする必要があります。

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

型安全性を向上させるために、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

厳密には、provide は WorkspaceProject のメソッドであるため、特定のプロジェクトに限定されます。ただし、すべてのプロジェクトはコアプロジェクトから値を継承するため、vitest.provide はテストに値を渡すための一般的な方法となります。

TIP

このメソッドは、パブリック API を使用したくない場合に、グローバルセットアップファイル でも使用できます。

js
export default function setup({ provide }) {
  provide('wsPort', 3000);
}
Pager
次のページテストランナー

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors

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

MITライセンス の下で公開されています。

Copyright (c) 2024 Mithril Contributors