隔離と同時実行性
Workers Vitest 統合がテストをどのように実行し、テストを互いに隔離し、モジュールをどのようにインポートするかを確認します。
Workers Vitest 統合を使用してテストを実行すると、Vitest は次のことを行います。
- Node.js を使用して構成ファイルを読み取り、評価します。
- Node.js を使用して任意の
globalSetup↗ ファイルを実行します。 - テストファイルを収集し、順序付けします。
- 各 Vitest プロジェクトについて、構成された隔離と同時実行性に応じて、1 つ以上の
workerd↗ プロセスを開始し、それぞれが 1 つ以上の Workers を実行します。 - 適切な Workers を使用して
workerdでsetupFiles↗ とテストファイルを実行します。 - 変更を監視し、構成が変更されていない場合は同じ Workers を使用してテストファイルを再実行します。
isolatedStorage と singleWorker の構成オプションは、隔離と同時実行性の両方を制御します。Workers Vitest 統合は、可能な限りテスト実行間で Workers とそのモジュールキャッシュを再利用し、開始する workerd プロセスの数を最小限に抑えようとします。現在の隔離ストレージの実装では、各 workerd プロセスが 1 回に 1 つのテストファイルを実行する必要があり、.concurrent テストはサポートされていません。すべての補助的な workers のコピーが各 workerd プロセスに存在します。
デフォルトでは、isolatedStorage オプションは有効になっています。小さなテストファイルが多数ある場合は、singleWorker: true オプションを有効にすることをお勧めします。
このモデルでは、各テストファイルのために workerd プロセスが開始されます。テストファイルは同時に実行されますが、.concurrent テストはサポートされていません。各テストは隔離されたストレージ環境から読み書きし、独自の補助的な workers にバインドされます。
このモデルでは、すべてのテストファイルのために単一の Worker を持つ単一の workerd プロセスが開始されます。テストファイルは直列に実行され、.concurrent テストはサポートされていません。各テストは隔離されたストレージ環境から読み書きし、同じ補助的な workers にバインドされます。
このモデルでは、各テストファイルのために Worker を持つ単一の workerd プロセスが開始されます。テストファイルは同時に実行され、.concurrent テストがサポートされます。すべてのテストは同じ共有ストレージから読み書きし、同じ補助的な workers にバインドされます。
このモデルでは、すべてのテストファイルのために単一の Worker を持つ単一の workerd プロセスが開始されます。テストファイルは直列に実行されますが、.concurrent テストはサポートされます。すべてのテストは同じ共有ストレージから読み書きし、同じ補助的な workers にバインドされます。
各 Worker には独自のモジュールキャッシュがあります。Workers はテスト実行間で再利用されるため、そのモジュールキャッシュも再利用されます。Vitest は、変更されたファイルに基づいて各テスト実行の開始時にモジュールキャッシュの一部を無効にします。
Workers Vitest プールは、Vitest が通常 Node.js ワーカースレッド ↗ 内で実行するコードを Cloudflare Worker 内で実行することによって機能します。これを可能にするために、プールは nodejs_compat および export_commonjs_default 互換性フラグを有効にする必要があります。また、プールは workerd を Node スタイルのモジュール解決を使用するように構成し、nodejs_compat によって提供されない必要な node:* モジュールのポリフィルを提供します。