Как собрать покрытие кода для порожденных подпроцессов, используя Jest? - PullRequest
0 голосов
/ 19 ноября 2018

Я пишу интеграционные тесты для CLI. Все модульные тесты написаны с использованием Jest, так как он готов к работе, он создает покрытие кода без какой-либо настройки, но, к сожалению, он не обрабатывает подпроцессы, например, выполняемые с помощью команд Node spawn и fork.

Я пытался ввести nyc в микс, как это было предложено в этом комментарии к проблеме GitHub , однако он не сработал для меня.

Я играл с различными конфигурациями (основываясь на первоначальном предложении, а также на идеях из этих вопросов: 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);
...