我的团队最近开始研究以前存在的完全用ES6编写的Node应用程序(在我们开始之前已经通过了几个不同的开发人员) . 该应用程序使用Mocha和Nyan作为Mocha的记者进行了最低限度的单元测试 . package.json文件已包含以下命令来运行测试:
"test": "node ./node_modules/mocha/bin/mocha --compilers js:babel-core/register ./test/**/*.spec.js"
作为部署周期的一部分,我们使用带有Travis和Codacy的CI / CD管道 . 因此,为了启用Codacy的"code coverage"部分,我需要对应用程序存储库和package.json文件进行一些更改 . 基本的想法是让Mocha生成一个.lcov文件,然后在Travis构建脚本中将其传送给Codacy .
做了一些研究后,我把以下内容放在一起成功生成了lcov文件:
"build-test": "node ./node_modules/mocha/bin/mocha -R mocha-lcov-reporter > coverage/coverage.lcov --compilers js:babel-core/register ./test/**/*.spec.js --reporter nyan"
问题是,我收到了.lcov文件的Codacy解析错误 . 我查看了其他项目的lcov文件,而且我正在生成的文件中似乎有额外的数据 . 这里参考的是生成的lcov文件:
0
0
0
[4A[5C-
[5C-
[5C-
[5C-
[4A[6C_,------,
[6C_| /\_/\
[6C^|__( - .-)
[6C "" ""
[4ACONSTRUCTOR
1
0
0
[4A[5C-_
[5C-_
[5C-_
[5C-_
[4A[7C_,------,
[7C_| /\_/\
[7C~|_( ^ .^)
[7C "" ""
[4ACONSTRUCTOR
2
0
0
[4A[5C-_-
[5C-_-
[5C-_-
[5C-_-
[4A[8C_,------,
[8C_| /\_/\
[8C^|__( ^ .^)
[8C "" ""
[4ACONSTRUCTOR
3
0
0
[4A[5C-_-_
[5C-_-_
[5C-_-_
[5C-_-_
[4A[9C_,------,
[9C_| /\_/\
[9C~|_( ^ .^)
[9C "" ""
[4ACONSTRUCTOR
{"name":"from http://localhost:9200 searcher","hostname":"NCI-01966295-ML","pid":14596,"level":30,"msg":"Active","time":"2017-05-16T23:02:37.746Z","v":0}
{"name":"from http://localhost:9200 searcher","hostname":"NCI-01966295-ML","pid":14596,"level":30,"msg":"Temporarily Closed to Accrual","time":"2017-05-16T23:02:37.747Z","v":0}
4
0
0
[4A[5C-_-_-
[5C-_-_-
[5C-_-_-
[5C-_-_-
[4A[10C_,------,
[10C_| /\_/\
[10C^|__( ^ .^)
[10C "" ""
[4ACONSTRUCTOR
5
0
0
[4A[5C-_-_-_
[5C-_-_-_
[5C-_-_-_
[5C-_-_-_
[4A[11C_,------,
[11C_| /\_/\
[11C~|_( ^ .^)
[11C "" ""
[4ACONSTRUCTOR
6
0
0
[4A[5C-_-_-_-
[5C-_-_-_-
[5C-_-_-_-
[5C-_-_-_-
[4A[12C_,------,
[12C_| /\_/\
[12C^|__( ^ .^)
[12C "" ""
[4ACONSTRUCTOR
7
0
0
[4A[5C-_-_-_-_
[5C-_-_-_-_
[5C-_-_-_-_
[5C-_-_-_-_
[4A[13C_,------,
[13C_| /\_/\
[13C~|_( ^ .^)
[13C "" ""
[4ACONSTRUCTOR
8
0
0
[4A[5C-_-_-_-_-
[5C-_-_-_-_-
[5C-_-_-_-_-
[5C-_-_-_-_-
[4A[14C_,------,
[14C_| /\_/\
[14C^|__( ^ .^)
[14C "" ""
[4ACONSTRUCTOR
9
0
0
[4A[5C-_-_-_-_-_
[5C-_-_-_-_-_
[5C-_-_-_-_-_
[5C-_-_-_-_-_
[4A[15C_,------,
[15C_| /\_/\
[15C~|_( ^ .^)
[15C "" ""
[4A
9 passing (20ms)
我观察了一些关于npm脚本(测试和构建测试)的事情:
-
测试工作正常,通知我9个测试正在通过
-
如果我在没有"--reporter nyan"的情况下运行build-test,它会说"no coverage data found, make sure your code is properly instrumented"
-
构建测试代码行中的所有内容似乎都是必要的 .
说实话,我的斗智斗勇 . 我不知道为什么.lcov文件有解析问题 . 我真正需要的是使用mocha和mocha-lcov-reporter生成一个有效的.lcov文件 . 似乎不应该那么困难 .
感谢您提供的任何帮助 . 我很感激 .
1 回答
你试过
nyc
吗?上面使用
nyc
命令行的未经测试的示例