我正在为CLI编写集成测试。所有的单元测试都是使用Jest编写的,因为它开箱即用,它无需任何配置即可产生代码覆盖,但是不幸的是,它不检测子流程,例如通过Node的spawn和fork命令执行。
我已尝试按照this comment on a GitHub issue中的建议将nyc引入混合,但是它对我没有用。
我玩过各种配置(基于上述的最初建议以及这些问题的构想:1,2),但是我根本没有覆盖率统计信息,或者仅获得了覆盖率统计信息单元测试,而不是产生子流程的集成测试。
我的package.json
的相关部分,用于配置nyc和Jest:
"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);