了解伊斯坦布尔的代码覆盖率

iRa*_*esh 6 javascript code-coverage istanbul

我刚开始使用一个示例文件(example.js),该文件包含以下语句:

x = 42;
if(false)
  x = -1;
Run Code Online (Sandbox Code Playgroud)

我没有任何单元测试文件.但是当我跑

istanbul cover example.js 
Run Code Online (Sandbox Code Playgroud)

我看到一些以下的覆盖率数据

=============================== Coverage summary ===============================
Statements   : 66.67% ( 2/3 )
Branches     : 50% ( 1/2 )
Functions    : 100% ( 0/0 )
Lines        : 66.67% ( 2/3 )
==============================================================================
Run Code Online (Sandbox Code Playgroud)

这是否意味着我有3个陈述中的2个陈述?如果是这样,当我没有针对该代码的任何单元测试文件时,如何报告此代码被覆盖?

根据我对代码覆盖率的定义理解,它是由单元测试覆盖的代码.我不明白为什么istabul说当我没有写任何单元测试时我有2个陈述.

Som*_*ens 5

伊斯坦布尔检查以查看运行的代码行.只需运行该文件就会执行两行,而忽略第三行.如果你要创建这样的东西:

module.exports = {
  myFunc: function() {
    x = 42;
    if(false) {
      x = -1;
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

你会得到一个不同的结果(x = 42根本不会运行).执行的一个声明是module.exports

=============================== Coverage summary ===============================
Statements   : 25% ( 1/4 )
Branches     : 0% ( 0/2 )
Functions    : 0% ( 0/1 )
Lines        : 25% ( 1/4 )
================================================================================
Run Code Online (Sandbox Code Playgroud)