我正在为 CLI 编写集成测试。所有单元测试都是使用开箱即用的 Jest 编写的,它无需任何配置即可生成代码覆盖率,但不幸的是,它不检测子流程,例如通过 Node 的 spawn 和 fork 命令执行。
我已尝试按照关于 GitHub 问题的评论中的建议将 nyc 引入组合中,但它对我不起作用。
我玩过各种配置(基于上述最初的建议以及来自这些问题的想法:1、2),但是我根本没有得到覆盖率统计数据,或者只有单元测试的覆盖率,而不是产生子测试的集成测试过程。
package.json
配置 nyc 和 Jest的 my 的相关部分:
"scripts": {
"test": "cross-env NODE_ENV=test nyc --clean jest --coverage",
},
"jest": {
"verbose": true,
"testURL": "http://localhost/",
"globalSetup": "./jest.setup.js",
"transform": {
"^.+\\.js$": "babel-jest"
},
"collectCoverage": false
},
"nyc": {
"include": [
"packages/*/src/**/*.js"
],
"reporter": [
"html"
]
},
我正在使用execa
运行子流程并执行以下操作:
await execa("nyc --reporter none node", args);