如何使用 Jest 收集生成的子流程的代码覆盖率?

sdg*_*uck 6 node.js istanbul jestjs nyc

我正在为 CLI 编写集成测试。所有单元测试都是使用 Jest 编写的,开箱即用,无需任何配置即可生成代码覆盖率,但不幸的是,它不会检测子进程,例如通过 Node 的 spawn 和 fork 命令执行。

我曾尝试按照GitHub 问题上的评论中的建议将纽约引入其中,但它对我不起作用。

我尝试过各种配置(基于上述最初的建议以及这些问题的想法:12),但是我要么根本没有覆盖统计数据,要么只覆盖我的单元测试,而不是生成子的集成测试流程。

my 的相关部分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"
  ]
},
Run Code Online (Sandbox Code Playgroud)

我用来execa运行子进程并执行以下操作:

await execa("nyc --reporter none node", args);
Run Code Online (Sandbox Code Playgroud)