本指南介绍如何使用 createTestHarness() 为 Worker 编写基本集成测试。示例以 Vitest 作为测试运行器,并测试通过 Wrangler 构建的 Worker。
你需要:
- 包含 Wrangler 配置文件的 Worker 项目
- Node.js 测试运行器,例如 Vitest ↗
- 已作为开发依赖项安装的
wrangler
从 wrangler 导入 createTestHarness(),并让测试框架指向 Worker 配置文件。
import { createTestHarness } from "wrangler";
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});import { createTestHarness } from "wrangler";
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});为简化操作,我们将在整个测试套件中复用一台服务器,并在每次测试后重置。若测试之间不共用相同配置,您也可以为每个测试启动新服务器。
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();
});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 发送请求,并断言响应结果。
import { test } from "vitest";
test("responds", async ({ expect }) => {
const response = await server.fetch("/");
expect(await response.text()).toBe("Hello World");
});import { test } from "vitest";
test("responds", async ({ expect }) => {
const response = await server.fetch("/");
expect(await response.text()).toBe("Hello World");
});