SuperAPI AI 工具集

playground-msw-tests

测试与质量

查看项目

更新于 10-16 00:06

技能介绍

用途:这是 packages/playground 和 packages/playground-ui 的首选测试方案。核心原则是“驱动真实传输、只模拟网络”,测试须用 Vitest 走真实的 @mastra/client-js、真实 React Query 缓存和真实组件/钩子路径,唯一打桩的接缝是网络边界(MSW),从而在类型检查与测试阶段发现契约漂移。

主要能力:适用于钩子、页面、路由组件、数据获取、门控、重定向、查询/变更流程与错误路径。提供标准测试骨架与 fixture 文件写法:fixture 放在 tests/fixtures/,并用 @mastra/client-js 重新导出的响应类型(如 ListStoredAgentsResponse、GetAgentResponse 等)标注;用 server.use(...) 按用例注册 handler,借助全局 afterEach 重置;通过 MastraReactProvider + QueryClientProvider + MemoryRouter 渲染,使真实客户端 SDK 作为传输层;可在 handler 内用 vi.fn() 断言端点是否被命中(适合测 enabled 门控)。还给出加载态、按 query string 变化相应、按 feature flag 门控等配方。

使用方式与基础设施:复用 src/test/msw-server.ts 导出的 server,以及 vitest.setup.ts 中已接好的 MSW 生命周期与 jsdom polyfill;未处理的请求会令测试失败。提交前运行 pnpm --filter ./packages/playground typecheck。

限制与禁止:不要 vi.mock 自有 hooks/services、@mastra/client-js 或 @mastra/react;不要写实现镜像测试;不要仅断言 className;不要在测试内联 TypeScript 类型;不要用 as any / as unknown as;MSW handler 不得返回不符合真实 SDK 的自定义结构。仅当行为跨页、需真实 Mastra 服务或属浏览器层面(拖拽、焦点、视口、上传)时才改用 Playwright。部分字段细节与版本要求暂未提供。