HTML覆盖率报告分析需按“定位→理解→验证”三步:先找红色/黄色行,再结合上下文判断未覆盖原因(如缺空值测试、未触发default分支等),最后通过补测试、加日志或debugger验证修复。

打开生成的 HTML 覆盖率报告后,核心是“定位 → 理解 → 验证”三步:先找到红色高亮行,再结合上下文判断为何未执行,最后用测试或调试确认逻辑路径是否真实缺失。
打开并导航到具体文件
运行 npx jest --coverage 或 vitest run --coverage 后,会生成 coverage/lcov-report/index.html。用浏览器打开它:
- 首页显示整体汇总:Lines(行)、Statements(语句)、Functions(函数)、Branches(分支)四类覆盖率数值
- 点击任一源码文件路径(如
src/utils/format.js),进入该文件的详细视图 - 左侧为代码列表,右侧为各维度覆盖统计和分支明细(Jest/Vitest HTML 报告均支持)
识别未覆盖代码的视觉标记
HTML 报告中用颜色直观区分执行状态:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
-
红色背景:该行完全未执行(如
else块、catch语句、default分支中的return) -
黄色背景:分支部分覆盖(例如
if (a && b)只走了a为真且b为真的路径,其余两种组合未触发) - 绿色背景:已执行且全覆盖
- 悬停在黄色/红色行上,会提示具体原因,如 “branch not covered” 或 “statement not covered”
结合上下文分析未覆盖行的真实含义
不能只看颜色,要读代码逻辑:
立即学习“前端免费学习笔记(深入)”;
- 若
if (!user)下整块标红,说明所有测试都传了有效user—— 缺少空值、null、undefined场景 - 若
switch (status)中default:标红,说明测试只覆盖了已知status值(如'active'、'pending'),没构造未知值触发兜底 - 若
throw new Error()标红,大概率是异常路径未模拟(如 mock API 返回 reject,或输入非法参数) - 构造函数里某行标红?检查是否所有测试都调用了该构造函数,或是否漏测参数校验分支
快速验证与补漏
确认问题后,立刻验证并修复:
- 在对应测试文件中加一个最小用例,专门触发该路径(例如传
role: 'guest'补else if (role === 'guest')) - 在可疑行前加
console.log('reached')或打 debugger,重新跑测试,看是否真没进 - 对异步逻辑,确保
await到位、done()调用正确,避免后续行因测试提前结束而标红 - 若确认是死代码(如
if (false) { ... })或纯调试语句,可用// istanbul ignore next注释跳过


















