用途:为 Supabase Studio 的 React 组件编写或审查组件测试。组件或其渲染的任一子组件通过 React Query hook 或 mutation 调用 /platform/...、/v1/... 等 apps/studio/data/api.d.ts 中的端点时使用本技能;通过 addAPIMock 注册按测试作用域生效的网络 mock,再用 customRender 挂载组件并断言。纯展示型组件无需 MSW,直接渲染断言即可。
主要用法:从 @/tests/lib/msw 引入 addAPIMock,从 @/tests/lib/custom-render 引入 customRender;用 HttpResponse.json 返回成功响应并显式传入 OpenAPI 类型泛型。服务端生命周期(listen/resetHandlers/close)由 apps/studio/tests/vitestSetup.ts 统一处理。不要用 vi.mock('@/data/...') 替代网络 mock,否则会掩盖真实缺陷,也无法覆盖 React Query 的缓存、重试与失效路径;vi.mock 仅用于非网络关注点(如沉重的子组件)。优先断言 UI 状态,仅在响应体不反映请求契约(如批量创建接口)时才捕获请求体。
已知限制与注意事项:路径参数用 :slug 而非 OpenAPI 的 {slug};成功响应统一用 HttpResponse.json;Sheets/Modals 中的提交按钮需用 fireEvent.click;受 profile 限制的查询需显式传 profileContext;useParams 全局 mock 为 { ref: 'default' };未 mock 的请求会因 onUnhandledRequest: 'error' 报错,需 mock 每次渲染触发的全部端点;查询字符串不能写在 handler 路径中,应在 resolver 内读取。调试时可用 mswServer.events 监听 request:unhandled 与 response:mocked。相关资料中未提供该技能的独立版本号、收费或官方发布状态。