求助: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
相关产品推荐
相关产品推荐

