【问题标题】:Node application testing and LCOV report generation with Mocha使用 Mocha 进行节点应用程序测试和 LCOV 报告生成
【发布时间】:2017-05-17 17:45:44
【问题描述】:

我的团队最近开始研究一个以前存在的完全用 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 的“代码覆盖”部分,我需要对应用程序存储库和 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,它会显示“未找到覆盖数据,请确保您的代码已正确检测”
  • build-test 代码行中的所有内容似乎都是必需的。

说实话,我已经不知所措了。我不知道为什么 .lcov 文件有解析问题。我真正需要的是使用 mocha 和 mocha-lcov-reporter 来生成有效的 .lcov 文件。看起来应该没那么难。

感谢您提供的任何帮助。我很感激。

【问题讨论】:

  • 您正在尝试使用 2 个记者运行覆盖率报告。你有-R mocha-lcov-reporter--reporter nyan。根据 cli -R 中的 mocha --help--reporter 的缩写。这不会解决您遇到的错误,但可能有助于缩小范围。

标签: node.js mocha.js lcov codacy


【解决方案1】:

你试过nyc吗?

上面使用nyc的命令行的未经测试的例子

"build-test": "./node_modules/.bin/nyc --reporter lcov --reporter nyan mocha --compilers js:babel-core/register ./test/**/*.spec.js

【讨论】:

    猜你喜欢
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多