unit-testing - 为什么从 npm 运行 Jest 时,我的覆盖率为 0?
问题描述
我正在尝试使用 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 获得真实的代码覆盖率统计信息?
解决方案
我发现了问题和解决方法。
在我package.json
的 Jest 配置中,它包括:
"jest": {
"rootDir": "./",
}
这意味着 Jest 的根目录是我的 npm 项目目录。在我设计的示例中,这是/var/www/html/path
.
为了获得正确的覆盖率值,我从使用绝对路径切换到相对于上述根目录的路径。所以现在对我有用的是:
npm test -- "to/tests/unit/Component.spec.js" "--coverage" "--collectCoverageFrom=/var/to/Component.vue"
collectCoverageFrom
在我的项目中不尊重绝对路径仍然很奇怪。
推荐阅读
- go - 我们可以在goroutine中实现goroutine吗?
- apache-flink - -m yarn-cluster 的真正含义是什么?
- pyvmomi - 如何使用 pyvmomi 检索 ESXi 主机上所有存储适配器的列表?
- python - 使用 2D 列表和 while 循环创建乘法表
- python - 用户输入以降序排列输出
- android - 将数据保存在 Fragment 中
- service - 带有作业调度程序的 Android 后台服务用于通知
- angular - 如何正确使用 OnDestroy
- android - 是否可以将用户深度链接到应用程序/播放商店以下载应用程序并将用户引导到唯一页面?
- javascript - 实例化新对象时如何将数据推送到密钥本身?