【免费下载链接】ai-sdk-providerThe OpenRouter provider for the Vercel AI SDK contains support for hundreds of models through the OpenRouter chat and completion APIs.项目地址https://gitcode.com/gh_mirrors/ai/ai-sdk-provider点击查看免费下载如果你正在使用 OpenRouter 的 ai-sdk-providerVercel AI SDK 的 OpenRouter Provider一定关心它如何保证在 Node.js 与 Edge 运行环境、以及真实 API 下都稳定可用。这个项目用Node、Edge、E2E 三套测试环境加上一套 issue 回归测试实现了从单元测试到真实模型调用的全覆盖。本文带你用 10 分钟看懂 ai-sdk-provider 的这套测试体系是怎么搭起来的。为什么需要三环境测试一个 AI SDK Provider 会同时运行在两类完全不同的运行时里Node.js 环境传统服务端、CLI 工具可以使用文件系统、Node 内置模块Edge 环境Vercel Edge Functions 等边缘计算场景运行时能力受限无完整 Node API、无文件系统。如果只在 Node 里测代码里悄悄用了fs之类的 API到 Edge 上线时就会踩坑如果只测本地 mock真实的模型响应格式流式分片、工具调用、reasoning 元数据变化又测不出来。因此项目选择同一套单元测试在两个运行时各跑一遍再用 E2E 打真实 API。测试脚本定义在 package.json 中命令配置文件运行环境测试范围作用pnpm test:nodevitest.node.config.tsnodesrc/**/*.test.tsNode 环境单元测试pnpm test:edgevitest.edge.config.tsedge-runtimesrc/**/*.test.tsEdge 运行时兼容性测试pnpm test:e2evitest.e2e.config.tsnodee2e/**不含 issues真实 API 功能测试pnpm test:issuesvitest.issues.config.tsnodee2e/issues/**Issue 回归测试pnpm test上述前两者的组合node edgesrc/**一键本地验证所有配置都基于 Vitest并通过vite-tsconfig-paths插件支持/src这样的路径别名还统一注入了__PACKAGE_VERSION__常量见 vitest.node.config.ts。Node 单元测试零成本跑全量用例单元测试全部位于src/下与被测源码同目录例如 src/chat/index.test.ts、src/tests/usage-accounting.test.ts、src/utils/resolve-reasoning.ts 等。关键点在于它们不需要 API Key请求由 AI SDK 官方的 mock 测试服务器createTestServer来自ai-sdk/test-server拦截并返回预置的 OpenRouter 风格响应覆盖聊天、补全、嵌入、重排、图像、视频等各模块模块入口见 src/index.ts。好处非常直观 跑得快本地几秒到几十秒即可全量通过 结果确定mock 响应固定断言可以精确到 token 用量、finish reason、流式分片 免费不消耗真实额度可以放心放进 CI 每次都跑。Edge 测试同一套用例换个运行时再跑一遍对比 vitest.node.config.ts 和 vitest.edge.config.ts两者的唯一实质差异是environment字段Node 配置environment: nodeEdge 配置environment: edge-runtime由edge-runtime/vm提供的 VM 模拟测试用例范围完全相同都是src/**/*.test.ts。也就是说Edge 测试不是另一批用例而是把 Node 通过的全量单测在 Edge 运行时里重放一遍。任何依赖 Node 专属 API 的写法都会在pnpm test:edge阶段现形。对于需要在 Vercel 边缘函数里部署 AI 应用的开发者这一步相当于免费的上线前体检。E2E 测试用真实 API 验证真模型单元测试管逻辑正确E2E 管线上行为正确。vitest.e2e.config.ts 的配置包含三个关键动作通过dotenv加载.env.e2e中的环境变量vitest.e2e.config.tsinclude指向./e2e/**/*.test.tsexclude明确排除./e2e/issues/**/*.test.ts——回归测试单独管理后文详述。.env.e2e需要自己创建仓库提供了模板 example.env.e2e只需两个变量# Rename to .env.e2e OPENROUTER_API_BASEhttps://openrouter.ai OPENROUTER_API_KEYyou-api-key-heree2e/目录按能力划分场景每个文件都调用真实模型测试文件验证能力e2e/cache-control.test.tsPrompt 缓存是否真的产生cachedTokense2e/parallel-tool-calls.test.ts并行工具调用e2e/usage-accounting.test.tstoken 用量与计费元数据e2e/pdf-blob/index.test.ts / e2e/pdf-url/index.test.tsPDF 文件理解含本地 PDF 夹具 e2e/fixtures/pdfs/generate-pdfs.she2e/video-generation.test.ts视频生成e2e/web-search/index.test.ts网络搜索e2e/embeddings/index.test.ts嵌入模型以缓存测试为例e2e/cache-control.test.ts第一次调用预热缓存第二次调用断言cachedTokens 0——这类行为级断言是 mock 测试很难覆盖的。真实请求耗时较长所以用例会单独放宽超时例如vi.setConfig({ testTimeout: 42_000 })。e2e/issues把每个 Bug 变成一条回归用例这是整个体系里最有特色的一环e2e/issues/ 目录下有45 个issue-*.test.ts文件每一个都对应一个真实报障的 GitHub issue例如 e2e/issues/issue-194-grok-invalid-json.test.ts。文件头部的注释就是问题档案例如issue-194-grok-invalid-json.test.tsRegression test for GitHub issue #194 Reported error: AI_APICallError: Invalid JSON response Model: x-ai/grok-4-fast (retired; the test now uses x-ai/grok-4.20)命名规范为issue-{编号}-{简短描述}.test.ts测试内容覆盖generateText、streamText、工具调用三条链路确保该 bug 永不复发。那为什么不用一个 e2e 命令全跑vitest.issues.config.ts 的注释解释了原因回归测试可能命中不同模型/API容易慢或被限流目的与功能测试不同——是回归监控而非功能验证适合按需运行或放入独立的 CI 任务。所以主 e2e 套件用exclude把它们挡在外面vitest.e2e.config.ts需要时用pnpm test:issues单独执行。这套约定完整记录在 CONTRIBUTING.md 的 Issue-Specific Regression Tests 章节。本地运行快速上手 ️# 1. 安装依赖 pnpm install # 2. 跑 Node Edge 全量单元测试无需任何密钥 pnpm test # 3. 可选准备 E2E 环境复制 example.env.e2e 为 .env.e2e 并填入 API Key # 然后按需运行真实 API 测试 pnpm test:e2e # 功能级 E2E pnpm test:issues # issue 回归测试CI 侧的门槛也写在 CONTRIBUTING.md提交 PR 前需通过pnpm stylecheck、pnpm typecheck、pnpm build、pnpm test全套检查。小结ai-sdk-provider 的测试体系可以概括为一张三环境 一档案的地图Node 单测mock 服务器驱动快速、免费、确定性强Edge 单测同一批用例在edge-runtime重放提前暴露运行时兼容问题E2E真实 API 验证缓存、工具调用、PDF、视频等核心能力issues 回归档案每个历史 bug 对应一条命名规范的回归用例按需运行、可长期监控。对使用者而言这意味着你可以放心地把它部署到 Node 或 Edge 环境对贡献者而言CONTRIBUTING.md 里的规范 现成的测试目录结构让修一个 bug 并防止它复发变成了一套标准动作。赞分享【免费下载链接】ai-sdk-providerThe OpenRouter provider for the Vercel AI SDK contains support for hundreds of models through the OpenRouter chat and completion APIs.项目地址https://gitcode.com/gh_mirrors/ai/ai-sdk-provider点击查看免费下载相关推荐OHIF Viewer 测试覆盖率指南Playwright E2E 测试体系与覆盖率统计实战OHIF Viewer 测试覆盖率指南Playwright E2E 测试体系与覆盖率统计实战 本文档围绕 OHIF Viewer 官方 3.11 版测试覆盖率医疗健康前端图像处理Karakeep测试策略Vitest单元测试与E2E测试全覆盖Karakeep测试策略Vitest单元测试与E2E测试全覆盖 Karakeep作为一款自托管的书签管理应用采用了全面的测试策略确保系统稳定性。项目通过Vi后端前端移动开发AI 应用MCP 服务CLIccusage 测试体系实践指南Rust 单元测试、Node 工具测试与快照覆盖全解析ccusage 测试体系实践指南Rust 单元测试、Node 工具测试与快照覆盖全解析 ccusage 是一个用 Rust 实现的跨 AI 编码工具使用量统计CLI开发工具AI 应用LLMOps上一篇Dify工作流编排实战从核心理念到企业级应用的完整指南下一篇跨平台Visio文件处理利器drawio-desktop完整使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?