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

求助:nyc+mocha测试用例通过但测试覆盖率为0%

解决测试通过但nyc覆盖率为0%的问题

我来帮你排查这个问题——测试能正常通过但覆盖率显示0%,通常是因为nyc没有正确追踪到你的被测文件,下面是具体的排查和解决步骤:

1. 给nyc明确指定覆盖范围

nyc默认只会扫描项目根目录下的文件,但你的被测文件在src/main/resources/static/js/components/路径下,需要明确告诉它要包含这个路径的文件。

在你的package.json中添加nyc配置块:

"nyc": {
  "include": [
    "src/main/resources/static/js/components/**/*.js"
  ],
  "exclude": [
    "**/test/**/*.js"
  ]
}
  • include用来指定要统计覆盖率的文件模式,**可以匹配任意层级的子目录
  • exclude用来排除测试文件,避免把测试代码本身算进覆盖率统计里

2. 简化测试脚本写法

你当前的脚本直接调用了nyc的bin文件,其实可以简化成更标准的写法(前提是nyc已经作为开发依赖安装):

"nyctest": "node --max_old_space_size=4096 nyc --reporter=text mocha"

如果还没安装nyc,先执行这个命令完成安装:

npm install nyc --save-dev

3. 验证模块导入路径

虽然测试能正常运行,但可以检查下导入路径是否清晰,避免nyc追踪模块时出现问题。比如调整测试文件里的导入语句,用更明确的相对路径(根据你的实际目录结构调整):

// 假设test.js位于项目根目录下的test子文件夹中,调整路径为:
var application = require('../../src/main/resources/static/js/components/app.js');

4. 更新nyc到最新稳定版

旧版本的nyc可能存在路径追踪的bug,执行以下命令更新到最新版:

npm update nyc

5. 重新运行测试验证

修改完成后,再次执行测试命令:

npm run nyctest

这时候nyc应该能正确统计到app.js的覆盖率了——你的测试确实调用了sample.returnValue()方法,正常情况下覆盖率应该是100%。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:18:08