代码之家  ›  专栏  ›  技术社区  ›  urig

为什么我从npm运行时从Jest获得0覆盖率?

  •  0
  • urig  · 技术社区  · 7 年前

    我正在尝试使用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获得真正的代码覆盖率统计信息 ?

    1 回复  |  直到 7 年前
        1
  •  1
  •   urig    7 年前

    我发现了问题并找到了解决办法。

    在我的 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 在我的项目中不尊重绝对路径。

    推荐文章