跳转到内容
搜索文档

从 unstable_dev 迁移

最后更新 查看 MarkdownAgent 设置

unstable_dev API 一直是运行集成测试的推荐方式。@cloudflare/vitest-pool-workers 包直接与 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:workers 中的 exports 实现相同目标。exports.default 指向 Wrangler 配置文件main 选项定义的默认导出。此 main Worker 在与测试相同的 isolate 中运行,因此任何全局 mock 也会应用于它。

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.js 中为所有测试设置对 Wrangler 配置文件的引用:

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

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

测试 service Worker

unstable_dev API 不同,Workers Vitest 集成不支持测试使用 service worker 格式的 Worker。你需要先迁移到 ES modules 格式才能使用 Workers Vitest 集成。

定义类型

你可以从代码中移除 UnstableDevWorker 导入。请改为遵循编写你的第一个测试指南为所有测试定义类型。

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

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

相关资源

这篇文档对您有帮助吗?