node.js - 使用 Istanbul 对 Node 微服务进行集成测试

标签 node.js mocha.js istanbul

关于使用 istanbul 进行集成测试的文档非常少。当我运行 mocha 测试时,我得到 No coverage information was collected, exit without writing coverage information

我做的第一件事是检测我所有的源代码:

✗ istanbul instrument . -o .instrument

在我的例子中,这是一个 REST 微服务,它是 Dockerized 的,我已经编写了 Mocha 测试来针对它运行以在部署后对其进行验证。我的期望是 istanbul 会为我提供针对该 Node 服务源的代码覆盖率。

我执行此命令的第二步是在我的检测代码上运行 Node :

✗ istanbul cover --report none .instrument/server.js

之后,我使用主 src 目录中的以下内容运行我的测试,如下所示(有结果):

✗ istanbul cover --report none --dir coverage/unit node_modules/.bin/_mocha -- -R spec ./.instrument/test/** --recursive


  swagger-tests
    #createPet
      ✓ should add a new pet (15226ms)
    #getPets
      ✓ should exist and return an Array (2378ms)
      ✓ should have at least 1 pet in list (2500ms)
      ✓ should return error if search not name or id
      ✓ should be sorted by ID (3041ms)
      ✓ should be sorted by ID even if no parameter (2715ms)
      ✓ should be only available pets (2647ms)
    #getPetsSortedByName
      ✓ should be sorted by name (85822ms)
    #deletePet
      ✓ should delete a pet (159ms)


  9 passing (2m)

No coverage information was collected, exit without writing coverage information

当我运行 istanbul report 时,它显然没有任何可报告的内容。

我错过了什么?

请参阅此 project 的开发分支重现问题。

最佳答案

Istanbul 尔的老板帮我解决了这个问题。我能够通过执行以下步骤让事情顺利进行:

  1. 跳过检测代码;不需要
  2. 按照@heckj 的建议使用--handle-sigint 调用 Istanbul 尔并删除标志--report none
  3. 一旦您的服务器启动,只需正常运行测试:./node_modules/.bin/_mocha -R spec ./test/** --recursive
  4. 从第2步关闭服务器以输出覆盖率
  5. 查看 open coverage/lcov-report/index.html 中的 HTML 文件

关于node.js - 使用 Istanbul 对 Node 微服务进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610349/

相关文章:

jestjs - Jest 覆盖不应在路径中包含 rootDir,与 Cypress 覆盖造成不匹配

javascript - 如何使用 isparta 从 karma 的代码覆盖范围中排除第三方导入(如 jquery)?

node.js - 无法使用 imagemin-webp 将图像转换为 WebP

javascript - 在 apache 中运行 Node.js?

node.js - 更改 nodemon 或 mocha 的调试端口

selenium-webdriver - 使用 Selenium 驱动程序的 Mocha 超时

javascript - 动态更改测试代码覆盖率的 require 语句的更好方法?

node.js - 如何使用 Puppeteer 等待所有下载完成?

mysql - 使用生成器重构 KOA 和 co-mysql 的 node-mysql 回调

javascript - Mocha - Chai : how to list all errors during a test