Skip to content

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

はじめに

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

このガイドでは、createTestHarness() で Worker の基本的な統合テストを書く方法を説明します。例ではテストランナーに Vitest を使い、Wrangler で作った Worker を検証します。

前提条件

次のものが必要です。

テストハーネスを作成する

wrangler から createTestHarness() をインポートします。テストハーネスに Worker の設定ファイルを指定します。

test/index.test.jsjs
import { createTestHarness } from "wrangler";

const server = createTestHarness({
	workers: [{ configPath: "./wrangler.jsonc" }],
});
test/index.test.tsts
import { createTestHarness } from "wrangler";

const server = createTestHarness({
	workers: [{ configPath: "./wrangler.jsonc" }],
});

テストハーネスのライフサイクルを管理する

簡単のため、テストスイート全体で 1 つのサーバーを再利用し、各テストのあとにリセットします。テストが同じ設定を共有しない場合は、テストごとに新しいサーバーを起動することもできます。

test/index.test.jsjs
import { afterAll, afterEach, beforeAll } from "vitest";

beforeAll(async () => {
	// Start the server before all tests
	await server.listen();
});

afterEach(async () => {
	// Recreates storage and restores the original Worker options after each test
	await server.reset();
});

afterAll(async () => {
	// Close the server after all tests
	await server.close();
});
test/index.test.tsts
import { afterAll, afterEach, beforeAll } from "vitest";

beforeAll(async () => {
	// Start the server before all tests
	await server.listen();
});

afterEach(async () => {
	// Recreates storage and restores the original Worker options after each test
	await server.reset();
});

afterAll(async () => {
	// Close the server after all tests
	await server.close();
});

最初のテストを書く

テストハーネスが提供する ヘルパー で Worker とやり取りし、挙動をアサートします。たとえば server.fetch() を呼び、Worker へリクエストを送ってレスポンスを検証できます。

test/index.test.jsjs
import { test } from "vitest";

test("responds", async ({ expect }) => {
	const response = await server.fetch("/");
	expect(await response.text()).toBe("Hello World");
});
test/index.test.tsts
import { test } from "vitest";

test("responds", async ({ expect }) => {
	const response = await server.fetch("/");
	expect(await response.text()).toBe("Hello World");
});

役に立ちましたか?