跳转到内容
本站为社区维护的非官方中文翻译,与 Cloudflare, Inc. 无关联。本站不提供账户登录,请勿在任何非官方站点输入您的 Cloudflare 账户信息。官方文档:developers.cloudflare.com

快速入门

最后更新 查看 MarkdownAgent 设置

本指南介绍如何使用 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" }],
});

管理测试框架的生命周期

为简化操作,我们将在整个测试套件中复用一台服务器,并在每次测试后重置。若测试之间不共用相同配置,您也可以为每个测试启动新服务器。

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");
});

这篇文档对您有帮助吗?