unstable_devからの移行
unstable_dev APIは、統合テストを実行するための推奨アプローチでした。@cloudflare/vitest-pool-workersパッケージは、Vitestと直接統合されており、高速な再実行をサポートし、ユニットテストと統合テストの両方をサポートしながら、テストごとに隔離されたストレージを提供します。
このガイドでは、unstable_dev APIを使用して書かれたテストとWorkers Vitest統合を使用して書かれたテストの主な違いを示します。Workers Vitest統合を使用したテストの作成に関する詳細は、最初のテストを書くを参照してください。
unstable_devを使用してfetchイベントをトリガーするには、次のようにします:
import { unstable_dev } from "wrangler"
it("fetchイベントをディスパッチします", () => { const worker = await unstable_dev("src/index.ts"); const resp = await worker.fetch("http://example.com"); ...})Workers Vitest統合を使用すると、cloudflare:testからSELFを使用して同じ目標を達成できます。SELFは、wrangler.tomlのmainオプションで定義されたデフォルトエクスポートへのサービスバインディングです。このmain Workerはテストと同じアイソレートで実行されるため、すべてのグローバルモックも適用されます。
import { SELF } from "cloudflare:test";import "../src/"; // 現在、`main`が変更されたときにテストを自動的に再実行するために必要
it("fetchイベントをディスパッチします", async () => { const response = await SELF.fetch("http://example.com"); ...});Workers Vitest統合を使用すると、worker.stop()を介してWorkerを停止する必要はありません。この機能は、テストが実行された後に自動的に処理されます。
unstable_dev APIを介して、オプションとしてwrangler.toml設定ファイルを参照できます:
await unstable_dev("src/index.ts", { config: "wrangler.toml",});Workers Vitest統合を使用すると、すべてのテストに対してvitest.config.jsでwrangler.tomlへの参照を設定できます:
export default defineWorkersConfig({ test: { poolOptions: { workers: { wrangler: { configPath: "wrangler.toml", }, }, }, },});---unstable_dev APIとは異なり、Workers Vitest統合はサービスワーカー形式を使用してWorkerをテストすることをサポートしていません。Workers Vitest統合を使用するには、まずESモジュール形式に移行する必要があります。
コードからUnstableDevWorkerのインポートを削除できます。代わりに、すべてのテストのタイプを定義するために最初のテストを書くガイドに従ってください。
import { unstable_dev } from "wrangler";import type { UnstableDevWorker } from "wrangler";import worker from "src/index.ts";
describe("Worker", () => { let worker: UnstableDevWorker; ...});- 最初のテストを書く - Workersに対するユニットテストを書く。