Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单元测试中的代码覆盖率_Javascript_Node.js_Mocha.js_Jscoverage - Fatal编程技术网

Javascript 单元测试中的代码覆盖率

Javascript 单元测试中的代码覆盖率,javascript,node.js,mocha.js,jscoverage,Javascript,Node.js,Mocha.js,Jscoverage,我试图得到我的单元测试没有涵盖的代码行 我使用mocha进行单元测试,它提供了一个报告器“json cov”,它应该报告我没有执行的行数 我有两个文件,第一个文件(foo.js): 当我运行mocha-R json cov test.js时,我得到以下结果: { "instrumentation": "node-jscoverage", "sloc": 0, "hits": 0, "misses": 0, "coverage": 0, "files": [], "st

我试图得到我的单元测试没有涵盖的代码行

我使用mocha进行单元测试,它提供了一个报告器“json cov”,它应该报告我没有执行的行数

我有两个文件,第一个文件(foo.js):

当我运行
mocha-R json cov test.js时,我得到以下结果:

{
  "instrumentation": "node-jscoverage",
  "sloc": 0,
  "hits": 0,
  "misses": 0,
  "coverage": 0,
  "files": [],
  "stats": {
    "suites": 1,
    "tests": 1,
    "passes": 1,
    "pending": 0,
    "failures": 0,
    "start": "2013-01-30T18:00:15.785Z",
    "end": "2013-01-30T18:00:15.787Z",
    "duration": 2
  },
  "tests": [
    {
      "title": "should add all arguments",
      "fullTitle": "foo should add all arguments",
      "duration": 1
    }
  ],
  "failures": [],
  "passes": [
    {
      "title": "should add all arguments",
      "fullTitle": "foo should add all arguments",
      "duration": 1
    }
  ]
}
我做错了什么,所以sloc、命中率、未命中率和覆盖率为0

我还尝试使用nodes
require
代替jsc,但没有成功

编辑:我刚刚尝试了
mocha-R json-cov test.js--coverage
,如果我使用jscs
require
,就会导致一个错误。当我使用nodes
require
时,结果与上面相同

编辑:我甚至无法从控制台运行jscoverage。我创建了foo和foo-cov文件夹,并将我的foo.js复制到foo文件夹中。然后我运行了
jscoverage foo foo cov
,这给了我一个错误
abs-source-path或abs-dest-path-needed。我还尝试了绝对路径和其他一些方法来安排参数。没有成功。如何准备jscoverage的文件

编辑:如果与此相关,我使用的是Windows

编辑:刚刚意识到,npm不仅提供一个“jscoverage”包,还提供一个“visionmedia jscoverage”。尝试安装那个失败了。可能是因为Windows和Linux

编辑:让它开始工作。我现在不再使用节点包来准备代码,而是从控制台运行jscoverage.exe(下载自),然后使用
mocha-R html cov test.js>coverage.html
。现在我有一个问题,一些代码被转义了。所以我明白了

<span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span>
突出显示

编辑:标记被转义,因为它们是通过jade模板呈现的,代码为:
td.source=line.source


将此更改为
td.source!=line.source
修复了我的上一个问题。

按照我的编辑,看看我做了什么来解决这个问题。

通过使用jscoverage的“-no highlight”选项,可以解决转义代码问题,而无需编辑mocha的jade模板,如下所示:

jscoverage --no-highlight foo foo-cov
<span class="k">var</span> foo <span class="k">=</span> <span class="k">{</span>
var foo = {
jscoverage --no-highlight foo foo-cov