Я пишу интеграционные тесты для 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);