在create-react-app项目中使用jest-junit进行测试覆盖失败

时间:2018-11-14 08:03:16

标签: jestjs create-react-app

在create-react-app/react-scripts@2.1.1项目中,我正在尝试使用jest-junit生成覆盖率报告。不幸的是,它失败并显示以下内容:

$ yarn run test --coverage
      Failed to write coverage reports:
      ERROR: Error: Invalid report format [jest-junit]
      STACK: Error: Invalid report format [jest-junit]
  at Object.module.exports.create (D:\Users\username\Documents\Project\node_modules\istanbul-api\lib\input-error.js:6:15)
  at Reporter.add (D:\Users\username\Documents\Project\node_modules\istanbul-api\lib\reporter.js:51:30)
  at D:\Users\username\Documents\Project\node_modules\istanbul-api\lib\reporter.js:62:18
  at Array.forEach (<anonymous>)
  at Reporter.addAll (D:\Users\username\Documents\Project\node_modules\istanbul-api\lib\reporter.js:61:14)
  at D:\Users\username\Documents\Project\node_modules\jest-cli\build\reporters\coverage_reporter.js:180:18
  at Generator.next (<anonymous>)
  at step (D:\Users\username\Documents\Project\node_modules\jest-cli\build\reporters\coverage_reporter.js:75:30)
  at D:\Users\username\Documents\Project\node_modules\jest-cli\build\reporters\coverage_reporter.js:86:15
  at process._tickCallback (internal/process/next_tick.js:68:7)

如果运行yarn run test,我不会遇到任何错误。以下配置块已添加到项目的package.json文件中:

{
  ...
  "jest": {
    "collectCoverageFrom": [
      "src/**/*.{js,jsx,ts,tsx}",
      "!src/**/*.d.ts",
      "!src/**/__stories__/",
      "!<rootDir>/node_modules/"
    ],
    "coverageReporters": [
      "jest-junit"
    ]
  }
  ...
}

有人在create-react-app @ 2项目中成功配置了jest-junit吗?

1 个答案:

答案 0 :(得分:2)

感谢@jonrsharpe的快速评论。我没有给予足够的关注……我的错误是将笑话放到了CoverageReporters(而不是记者)中。

不幸的是,create-react-app @ 2似乎不支持package.json中的自定义报告器配置。有趣的是,以下命令有效:

$ yarn run test --coverage --reporters=default --reporters=jest-junit

我习惯了大多数create-react-app的配置,这些配置会覆盖任何显式定义的选项。但是,看来yarn run test存在一个例外(或漏洞?)。通过上面的操作,我得到了所需的junit.xml文件。