关于使用 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 尔的老板帮我解决了这个问题。我能够通过执行以下步骤让事情顺利进行:
- 跳过检测代码;不需要
- 按照@heckj 的建议使用
--handle-sigint
调用 Istanbul 尔并删除标志--report none
- 一旦您的服务器启动,只需正常运行测试:
./node_modules/.bin/_mocha -R spec ./test/** --recursive
- 从第2步关闭服务器以输出覆盖率
- 查看
open coverage/lcov-report/index.html
中的 HTML 文件
关于node.js - 使用 Istanbul 对 Node 微服务进行集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610349/