Workers の Vitest 連携がテストをどう実行するか、テスト同士をどう分離するか、モジュールをどうインポートするかを確認します。
Workers の Vitest 連携でテストを実行すると、Vitest は次の処理を行います。
- Node.js で設定ファイルを読み込み、評価します。
- Node.js で
globalSetup↗ ファイルがあれば実行します。 - テストファイルを収集し、順序を決めます。
- 各 Vitest プロジェクトについて、設定された分離と並行実行に応じて、1 つ以上の
workerd↗ プロセスを起動します。各プロセスは 1 つ以上の Worker を実行します。 workerd内の適切な Worker でsetupFiles↗ とテストファイルを実行します。- 変更を監視し、設定が変わっていなければ、同じ Worker でテストファイルを再実行します。
ストレージの分離はテストファイル単位です。各テストファイルは独自のストレージ環境を持ち、テストファイル中のストレージへの書き込みは、ほかのテストファイルからは見えません。Workers の Vitest 連携は、可能な場合、テスト実行間で Worker とそのモジュールキャッシュを再利用します。補助の workers のコピーは、各 workerd プロセスに存在します。
デフォルトでは、テストファイルは並行して実行されます。テストファイルで同じストレージを共有するには(たとえば、共有状態に依存する統合テスト)、Vitest のフラグ --max-workers=1 --no-isolate を使います。
各 Worker は独自のモジュールキャッシュを持ちます。Worker はテスト実行間で再利用されるため、モジュールキャッシュも再利用されます。Vitest は、変更されたファイルに基づき、各テスト実行の開始時にモジュールキャッシュの一部を無効化します。
Workers Vitest プラグインは、通常なら Node.js の Worker スレッド ↗ 内で動く Vitest のコードを、Cloudflare Worker 内で実行します。これを可能にするため、プラグインは nodejs_compat、[no_nodejs_compat_v2] および export_commonjs_default の互換性フラグを 自動注入 します。これは Vitest を正しく動かすための最小構成であり、不要なポリフィルやグローバルは取り込みません。設定にすでに Node.js 互換性フラグがある場合、Vitest プラグインはこれらのフラグを追加しません。