2016-03-04 33 views
0

我能够使用Karma,Tape和Istanbul(特别是babel-istanbul)来获得看起来像我的ES6代码库的正确覆盖率报告,但HTML报告显示了一些红色的覆盖线,即使它显示在保证金,他们已覆盖测试套件若干次:为什么我的报道报告以红色显示覆盖线?

enter image description here

特别是13号线显示4倍的覆盖范围,这反映了测试我只写了(它调用concat()四次)。

为什么这条线是红色的?

+0

嗨,我有同样的问题,你找到原因了吗? – egig

+0

不幸的是,我并没有真正的。由于事情如此复杂以及结果不确定,我当时退出了自动覆盖测试。现在情况可能会更好。 –

回答

-1

我认为发生了什么事是线路正在运行保证金中列出的次数,但它们是红色的,因为覆盖率的某些方面未被击中。看看我的截图,我不确定第13行可能是什么,但是将鼠标悬停在红线上会弹出一条消息,说明错过了什么。

-1

嗨,我认为这是因为在你的摩卡文件中,你需要从lib而不是src

您应该要求src代码而不是编译代码。 并确保在您的package.json脚本您有类似

{ 
"compile": "babel src/ -d lib/ --presets es2015 --source-map both", 
"test": "npm run compile && mocha", 
"test-cov": "npm run compile && istanbul cover _mocha -- --opts ./test/mocha.opts" 
} 

src是你的源代码 lib被编译后的代码 --source-map both可以帮助伊斯坦布尔赛道的源代码覆盖率

摩卡

.opts

--require babel-polyfill 
--compilers js:babel-register 
+0

我不确定你的意思 - 我没有使用摩卡,并且我正在使用我的ES6代码中的正确行覆盖(通过嵌入编译文件的源代码)。我的问题与为什么线是红色的,但仍然(正确地)报告为被覆盖。 –

+0

你需要嵌入源码地图,在es6代码和编译后的代码中。如果你不使用摩卡,你使用哪种测试框架,你能指定吗?你在测试框架中需要哪个文件? es6代码或编译代码?尝试在您的测试框架中要求es6代码 – Sabrina

+0

我的源代码已嵌入;这就是为什么我获得ES6代码覆盖率的结果。我原来的问题描述了我的设置:录制测试的磁带,运行它们的业力以及用于覆盖的babel-istanbul。 –

相关问题