【问题标题】:Test coverage using jest-junit fails in a create-react-app project在 create-react-app 项目中使用 jest-junit 的测试覆盖率失败
【发布时间】:2019-04-17 03:23:06
【问题描述】:

在 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 吗?

【问题讨论】:

  • 您的配置似乎与 jest-junit 页面上显示的不匹配,您为什么与此不同?

标签: jestjs create-react-app


【解决方案1】:

感谢@jonrsharpe 的快速评论。我没有给予足够的关注……我的错误是把 jest-junit 放到了 coverageReporters(而不是记者)中。

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

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

我习惯于大多数 create-react-app 的配置覆盖任何明确定义的选项。但是,yarn run test 似乎存在异常(或漏洞?)。通过以上,我得到了想要的 junit.xml 文件。

【讨论】:

  • @twinlakes 重复是什么意思?最后,我没有在package.json 中添加任何内容。我只是将--reporters 参数添加到测试命令中。
  • 这是因为jest会产生两种类型的报告:defaultjest-junit
猜你喜欢
  • 2020-06-03
  • 2017-10-09
  • 1970-01-01
  • 2021-05-13
  • 2017-07-04
  • 2019-01-30
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
相关资源
最近更新 更多