摩洛哥伊斯坦布尔在反应的应用程序不正确的覆盖面

背景

我的项目包括:

  • 一个带有jsxjs (包括*.test.js )文件的app/目录
  • 调用instanbul的npm脚本:

babel-node ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha -- \"./{,!(node_modules)/**/}*.spec.js\" --delay --compilers js:babel-core/register --recursive

  • 我估计实际上我有3-5%的代码覆盖率

问题

当我运行报告时,数字要高得多:

 ======== Coverage summary ======== Statements : 93.24% ( 193/207 ) Branches : 41.67% ( 10/24 ) Functions : 92.45% ( 49/53 ) Lines : 94.12% ( 192/204 ) 

也许instanbul不包括jsx文件,因为我有:

  • jsx LOC的jsx
  • js〜600 LOC

任何人都可以提供洞察到configuration – 谢谢

编辑1

我添加了一个.instanbul.yml文件,它改进了一些东西,但似乎还是太高了:

 #.instanbul.yml instrumentation: root: app/ extensions: ['.js', '.jsx'] 

输出:

 ======== Coverage summary ======== Statements : 74.85% ( 372/497 ) Branches : 32.84% ( 44/134 ) Functions : 84.21% ( 64/76 ) Lines : 75.3% ( 372/494 ) 

编辑2

我用.istanbul.yml并调整了我的.istanbul.yml

 babel-node isparta cover --include \"**/*.js\" --include \"**/*.jsx\" _mocha -- \"./{,!(node_modules)/**/}*.spec.js\" --delay --compilers js:babel-core/register --recursive 

输出:

 ===== Coverage summary ===== Statements : 87.7% ( 934/1065 ), 46 ignored Branches : 82.11% ( 413/503 ), 137 ignored Functions : 94.17% ( 194/206 ), 30 ignored Lines : 77.88% ( 419/538 ) ================================== 

解决scheme+改变战略

我还需要排除.instanbul.yltesting:

 instrumentation: root: app excludes: ['*.spec.js'] extensions: ['.js', '.jsx'] 

起初,我感到惊讶的是,报道仍然如此之高。 但是这是因为总的来说,大部分的代码实际上是与渲染/生命周期有关的。 只要testing环境(浅)呈现组件(使用酶),就会执行此代码。

这表明我需要稍微改变策略。 我可能会想出另一类行为testing( *.bvr.test.js ),它将被devise为镜像用户的故事。 这将是一个单独的代码覆盖率报告。