关键是要系统性识别并触达每个决策点的真假路径,如if、switch、三元运算符、&&/||等分支点,通过边界值、异常状态和Jest覆盖率报告反向驱动补全测试,确保% Branch达90%以上。

要让 JavaScript 单元测试真正覆盖所有分支逻辑、做到“零死角”,关键不是堆砌用例数量,而是系统性识别和触达每个决策点的真假路径。Jest 的覆盖率报告里,“% Branch”低于 90% 就说明有分支被跳过——这往往就是线上 bug 的温床。
精准定位每个分支点
先读懂代码里的“分支”到底在哪:一个 if、else if、else、switch case、三元运算符 ?:、甚至 && 和 || 的左右操作数,都构成独立分支点。比如:
-
if (a > 0 && b !== null)是 1 个判定,但需至少两组输入:一组让整体为 true(如 a=5, b={}),一组为 false(如 a=-1, b=null) -
switch (status) { case 'loading': ... case 'error': ... default: ... }必须分别触发 loading、error 和任意非预设值(如 'unknown')来点亮全部分支 - 异步方法中
try/catch是典型双分支,必须同时写 resolve 和 reject 场景的测试
强制覆盖边界与异常组合
只测“正常流程”永远不够。分支盲区集中在输入边缘和状态突变处:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 对接受字符串的函数,试 ''、' '、undefined、null、123(非法类型)
- 对数组处理逻辑,用 [](空)、[1](单元素)、[1,2,3,4](多元素)验证循环进不进、跑几次、停不停
- 权限类逻辑,模拟 token 有效 / token 过期(401) / 网络中断(fetch 抛错) 三种状态切换
用 Jest 报告反向驱动补漏
运行 npm test -- --coverage 后打开 HTML 报告,重点盯三处:
立即学习“Java免费学习笔记(深入)”;
- 文件行侧边的红/绿标记:红色行代表该行所在分支未被执行(不只是没运行,是整个 true 或 false 路径缺失)
- 同一文件下 % Branch 明显低于 % Lines:说明大量代码被运行了,但条件判断只走了一边
- 点击具体函数,看每个 if 右侧是否显示 “1/2 branches covered”——只有变成 “2/2” 才算真正覆盖
私有方法与 getter/setter 不可绕过
class 内部的私有方法(#method)、含逻辑的 get/set、静态方法,同样存在分支。它们不能靠“调用 public 方法间接覆盖”:
- 私有方法需通过 public 方法触发,但要确保触发路径能进入其内部 if 或 throw
- getter 若含
return this.items?.length ?? 0,就得测 this.items = null 和 this.items = [1] 两种情况 - setter 若做校验如
set age(val) { if (val ,就必须写抛错测试

















