You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Jest在统计覆盖率时忽略JSDoc注释?

解决Jest误将JSDoc注释统计为已覆盖代码的问题

问题场景

无任何测试用例时,Jest的代码覆盖率统计错误地将JSDoc注释判定为已覆盖代码,导致覆盖率结果失真。

示例代码(index.js)

/**
 * Calculates a sum of all givens numbers
 * 
 * @example sum(1,1); // 2
 * @example sum(1,2,-5,2.4,-6.5); // -6.1
 * @example sum(1,2,3,4,5,6,7,8,9,0); // 45
 * @example sum(-1,2,3,4,5,6,7,8,-9); // 25
 * 
 * @param  {...number} numbers - the numbers to sum
 * @returns {number} summ of all numbers
 * 
 * @function sum
 */
export function sum(...numbers) {
    return numbers.reduce((acc, curr) => acc + curr, 0);
}

当前错误覆盖率输出

File     | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
---------|---------|----------|---------|---------|------------------
index.js |   88.23 |      100 |       0 |   88.23 | 16-17  

期望覆盖率输出

File     | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
---------|---------|----------|---------|---------|------------------
index.js |       0 |        0 |       0 |       0 | ...  

解决方案

1. 升级Jest到最新稳定版

旧版本Jest或其依赖的覆盖率工具可能存在注释识别bug,升级后通常能解决这类问题:

npm install --save-dev jest@latest

2. 配置Babel插件精准排除注释统计

如果使用Babel转译,安装babel-plugin-istanbul并配置它忽略注释类内容:

  • 安装依赖:
npm install --save-dev babel-plugin-istanbul
  • 在babel.config.js中添加配置:
module.exports = {
  env: {
    test: {
      plugins: [
        ["istanbul", {
          "exclude": ["**/*.jsdoc", "**/*.md"],
          "ignoreClassMethods": [],
          "ignoreFunctionMethods": []
        }]
      ]
    }
  }
};

3. 切换到V8覆盖率提供者

Jest支持V8和Istanbul两种覆盖率收集器,V8对现代JS语法和注释的处理更准确。在jest.config.js中设置:

module.exports = {
  coverageProvider: "v8"
};

4. 精准指定覆盖率收集范围

在jest.config.js中通过collectCoverageFrom明确只统计业务代码,避免误判:

module.exports = {
  collectCoverageFrom: [
    "src/**/*.js",
    "!**/*.test.js",
    "!**/__mocks__/**"
  ]
};

验证

完成配置后,重新执行覆盖率命令:

jest --coverage

此时无测试用例的情况下,所有覆盖率指标应显示为0%,符合预期。

内容的提问来源于stack exchange,提问作者Flavio Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:35:19