命名导出单元测试需显式花括号导入,vitest中直接import后用describe/it组织测试,依赖项天然共存无需mock,重命名导出按导入名断言。

对命名导出进行单元测试,核心是把导出的函数、常量或类当作独立可测单元,不依赖模块整体加载逻辑。只要能正确导入,就能像测试普通变量一样验证其行为。
确保模块可直接导入
命名导出必须通过显式花括号语法导入,不能省略大括号:
- ✅ 正确: import { add, multiply } from './math.js';
- ❌ 错误: import add from './math.js';(这是默认导出写法)
- 如果模块同时有命名导出和默认导出,可混合导入:import DefaultClass, { helperFn } from './utils.js';
用 Vitest 编写针对性测试
Vitest 原生支持 ES 模块,无需额外配置即可直接 import 命名导出。每个测试文件聚焦一个模块,结构清晰:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 用 describe 描述模块用途,例如
describe('math utils') - 用 it 描述具体导出项的行为,例如
it('add returns correct sum') - 断言时直接调用导入的函数,例如
expect(add(1, 2)).toBe(3)
处理导出值之间的依赖关系
若某命名导出依赖另一个命名导出(比如 const PI = 3.14; export function circleArea(r) { return PI * r * r; }),测试时无需 mock 它们——因为它们同属一个模块,在测试中天然共存。只要确保导入完整,内部引用就会正常工作。
- ✅ 可直接测试:import { circleArea, PI } from './geometry.js';
- 测试
circleArea时,它自然使用模块内定义的PI,无需替换 - 如需验证
PI本身,单独加一条it('exports PI as 3.14')即可
重命名导出不影响测试方式
即使源模块用了 export { PI as PI_VALUE },测试时只需按导入时写的名称来引用:
- 导入写成:import { PI_VALUE } from './geometry.js';
- 测试就用:expect(PI_VALUE).toBe(3.14);
- 名称映射发生在 import 阶段,不影响运行时行为或断言逻辑










