我正在尝试使用Jest获取单个Vue组件的代码覆盖率编号。
假设我的组件是/var/www/html/path/to/Component.vue
,其相应的单元测试文件是/var/www/html/path/to/tests/unit/Component.spec.js
在我的package.json
中,我有以下脚本:
"scripts": {
"test": "jest --no-cache"
}
当我运行Jest以仅覆盖我的组件时,就像这样:
npm test -- "/var/www/html/path/to/tests/unit/Component.spec.js" "--coverage" "--collectCoverageFrom=/var/www/html/path/to/Component.vue"
我得到零代码覆盖率数字:
=============================== Coverage summary ===============================
Statements : Unknown% ( 0/0 )
Branches : Unknown% ( 0/0 )
Functions : Unknown% ( 0/0 )
Lines : Unknown% ( 0/0 )
================================================================================
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 4.019s
为什么会得到此结果,如何通过npm从Jest获取真实的代码覆盖率统计信息??
答案 0 :(得分:0)
我已经找到了问题和解决方法。
在我的package.json
中,我有Jest配置,其中包括:
"jest": {
"rootDir": "./",
}
这意味着Jest的根目录是我的npm项目目录。在我的人为示例中,这是/var/www/html/path
。
为了获得正确的coverage值,我从使用绝对路径切换到相对于上述根目录的路径。所以现在对我有用的是:
npm test -- "to/tests/unit/Component.spec.js" "--coverage" "--collectCoverageFrom=/var/to/Component.vue"
奇怪的是,collectCoverageFrom
不尊重我项目中的绝对路径。
答案 1 :(得分:0)
在使用 --config= option 运行 jest 时,我也遇到了 0% 覆盖率的问题。问题是 jest 假定 configPath
是根目录,因此找不到任何文件来检查覆盖范围。
我的解决方案只是在目录树中进入更高的位置:
{
"rootDir": "../.",
...
}
在目录中调整您上级的步骤(如"../../."
)或将配置文件放在您的根目录中。