Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

unstable_dev からの移行

最終更新 Markdown で表示Agent セットアップ

unstable_dev API は、統合テストの実行方法として推奨されてきました。@cloudflare/vitest-plugin パッケージは Vitest と直接連携し、再実行が速く、単体テストと統合テストの両方に対応し、テストごとに分離されたストレージを提供します。

このガイドでは、unstable_dev API で書いたテストと Workers Vitest 連携の主な違いを示します。Workers Vitest 連携でのテストの書き方は、最初のテストを書く を参照してください。

統合テスト用に Worker を参照する

unstable_dev では、fetch イベントを発火するには次のようにします。

import { unstable_dev } from "wrangler"

it("dispatches fetch event", () => {
  const worker = await unstable_dev("src/index.ts");
  const resp = await worker.fetch("http://example.com");
  ...
})

Workers Vitest 連携では、cloudflare:workersexports で同じことができます。exports.default は、Wrangler 設定ファイルmain オプションで定義したデフォルトエクスポートを指します。この main Worker はテストと同じ isolate で動くため、グローバルモックも適用されます。

import { exports } from "cloudflare:workers";
import "../src/"; // Currently required to automatically rerun tests when `main` changes

it("dispatches fetch event", async () => {
	const response = await exports.default.fetch("http://example.com");
	...
});

Worker を停止する

Workers Vitest 連携では、worker.stop() で Worker を停止する必要はありません。テスト実行後に自動で処理されます。

Wrangler 設定をインポートする

unstable_dev API では、オプションとして Wrangler 設定ファイル を指定できます。

await unstable_dev("src/index.ts", {
	config: "wrangler.toml",
});

Workers Vitest 連携では、すべてのテスト向けに vitest.config.jsWrangler 設定ファイル を指定できます。

import { cloudflareTest } from "@cloudflare/vitest-plugin";
import { defineConfig } from "vitest/config";

export default defineConfig({
	plugins: [
		cloudflareTest({
			wrangler: {
				configPath: "wrangler.jsonc",
			},
		}),
	],
});

Service Worker をテストする

unstable_dev API と異なり、Workers Vitest 連携は Service Worker 形式の Workers のテストをサポートしません。Workers Vitest 連携を使うには、先に ES modules 形式へ移行 してください。

型を定義する

コードから UnstableDevWorker のインポートを削除できます。代わりに、最初のテストを書く に沿って、すべてのテストの型を定義します。

- import { unstable_dev } from "wrangler";
- import type { UnstableDevWorker } from "wrangler";
+ import worker from "src/index.ts";

  describe("Worker", () => {
-   let worker: UnstableDevWorker;
    ...
  });

関連リソース

役に立ちましたか?