使用 jest 15.1.1 的代码覆盖率 "Unknown"

Code coverage "Unknown" using jest 15.1.1

当我尝试包含所有项目源代码以获得更合理的代码覆盖率数字时,我最终得到

----------|----------|----------|----------|----------|----------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines |Uncovered Lines |
----------|----------|----------|----------|----------|----------------|
All files |  Unknown |  Unknown |  Unknown |  Unknown |                |
----------|----------|----------|----------|----------|----------------|

我的配置包含以下内容:

"collectCoverageFrom": [
    "<rootDir>/app_modules/",
    "<rootDir>/src/"
],    

我也试过不带尾随 /、带 **/*.js 和只带尾随 *.js 都无济于事。

基于 --debug 选项,路径扩展到我想从中收集覆盖信息的路径(不是问题)

那么获得更准确的覆盖信息的魔力是什么?

我能找到的最好的文档来自这个 Github PR:https://github.com/facebook/jest/pull/1349/files


我最后做了:

"collectCoverageFrom": [
    "**/*.js",
    "!webpack.config.js"
],

之所以有效,是因为这是默认配置的一部分

"testPathIgnorePatterns": [
    "/node_modules/"
],

虽然它确实增加了大量的测试时间运行。

仔细看看你的link:

collectCoverageFrom: {
  description: wrap(
    'relative to <rootDir> glob pattern matching the files that coverage ' +
      'info needs to be collected from.'
      ...

您不能使用 <rootDir>。尝试:

collectCoverageFrom: [
    "**/app_modules/**",
    "**/src/**"
],

这只是要添加到您编辑的问题中的其他信息:而不是声明第二个数组:

"testPathIgnorePatterns": [
    "/node_modules/"
],

您可以继续使用您的 collectCoverageFrom 数组,方法是将 ! 添加到您不想收集覆盖信息的目录:

collectCoverageFrom: [
    "!**/node_modules/**"
],

您可以使用选项 forceCoverageMatch 强制取消覆盖:['/.ts','/.js']