Istanbul/nyc 默认启用分支覆盖率统计,需通过配置验证、运行带 reporter 的命令生成报告,在 HTML 报告中依红/黄色背景及提示识别未覆盖分支,并可用 check-coverage 按阈值校验。

在 JS 单元测试中用 Istanbul(现主流为 nyc)检查分支覆盖,核心是确保工具能识别并统计 if/else、?:、switch 等逻辑分支的执行情况,并在报告中明确标出哪些分支未走。
确认分支覆盖率已启用
Istanbul/nyc 默认开启分支统计,但需验证配置是否生效:
- 检查
.nycrc或package.json中的branches字段,值应为true(默认即如此,无需显式写) - 若使用旧版
istanbulCLI(不推荐),需加--include-all-sources和--reporter=html才能完整显示分支数据 - 运行后查看生成的
coverage/coverage.json,搜索"branches"字段,确认有covered、total和details数组
运行测试并生成带分支信息的报告
命令需触发覆盖率收集,并输出可读性强的分支视图:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 基础命令:
nyc npm test(假设test脚本运行 Jest/Mocha) - 推荐加参数增强分支可见性:
nyc --reporter=html --reporter=text-summary npm test - HTML 报告打开
coverage/index.html后,在文件列表页顶部能看到 Branches: xx% (a/b);点进具体文件,黄色高亮行 表示该行含分支但只覆盖了部分路径(如只进了if没进else)
从报告里识别未覆盖的分支
分支未覆盖不是“整行红”,而是有特定视觉提示:
- 红色背景:整行未执行(行覆盖率缺失,也意味着该行内分支未触发)
-
黄色背景 + 右侧小箭头图标:该行有分支结构(如
if (x) a(); else b();),但仅一个分支被执行 - 鼠标悬停黄色行,会弹出提示如
1 out of 2 branches covered,点击可跳转到对应coverage.json的branches.details条目,看到每个分支的起始位置和是否命中
用命令行快速验证分支达标情况
适合 CI 流程或本地快速检查阈值:
- 强制要求分支覆盖率 ≥ 85%:
nyc check-coverage --branches 85 - 允许最多 2 个分支未覆盖(绝对值门槛):
nyc check-coverage --branches -2 - 同时校验多个维度:
nyc check-coverage --lines 90 --branches 85 --functions 95

















