fix(test): Header.test.tsx antd/icons mock 透传缺失导出(修复 Typography 未定义) #1947
Reference in New Issue
Block a user
Delete Branch "fix/header-test-antd-mock"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
CI 单测失败:
根因:Header 现在渲染 PointsBadge,后者从 antd 解构 Popover/Button/Tag/Space/Typography/Badge 等组件,但测试文件里的
vi.mock("antd", () => ({...}))只返回 Avatar/Dropdown/Space/Drawer 四个组件,未 mock 的导出被 vitest 视为 undefined,PointsBadge 第 18 行const { Text, Paragraph } = Typography直接报错。同样
@ant-design/iconsmock 只有 4 个图标,PointsBadge 需要的 ThunderboltOutlined/CrownOutlined/RightOutlined/WarningOutlined 也缺失。修复
两个 mock 都改用
vi.importActual模式(和文件内已有的react-router-dommock 一致),透传真实库的全部导出,只对测试用例需要断言的 Avatar/Dropdown/Space/Drawer + 4 个图标做局部覆盖:其他测试文件
扫描了
apps/web/src/test/**/*.test.ts(x)共 29 个单测文件:vi.mock("antd", () => ({ message: { error, success } }))仅 mock message,纯 axios 逻辑不渲染 React 组件,不会触发其他 antd 导出,保持现状无风险。验证
本地 Prettier 格式已对齐;等 CI Frontend Unit Tests 通过确认。
Header 现在渲染 PointsBadge,后者从 antd 解构 Popover/Button/Tag/Space/Typography/Badge,从 @ant-design/icons 解构 ThunderboltOutlined/CrownOutlined/RightOutlined/WarningOutlined。 原 mock 只返回 Avatar/Dropdown/Space/Drawer + 4 个图标,vitest 遇到 Typography 等未 mock 的导出会报: [vitest] No "Typography" export is defined on the "antd" mock 修复:改用 vi.importActual 透传真实 antd / @ant-design/icons 的全部导出,只对测试中需要断言的 Avatar/Dropdown/Space/Drawer + 4 个图标做局部覆盖。 其他 17 个 API 单测的 vi.mock("antd", () => ({message:{error,success}})) 模式是纯逻辑测试,不渲染 React 组件,不会触发其他 antd 导出加载,保持现状不影响稳定性。CI全绿,自动审批通过。
CI全绿,自动审批通过。
🚀 预览环境已部署
🗑️ 预览环境已清理
PR #1947 已关闭或合并,对应的预览环境已被清理。