角度测试 - 生成覆盖率报告时出错

问题描述 投票:0回答:1

我正在尝试从ng test --code-coverage获得报道。没有覆盖,测试运行没有问题,但有了它我得到这个错误:

ERROR [karma]: TypeError: Cannot read property 'replace' of undefined
  at fixPathSeparators (<path>\node_modules\karma-coverage-istanbul-reporter\src\util.js:20:21)
  at Object.fixWebpackSourcePaths (<path>\node_modules\karma-coverage-istanbul-reporter\src\util.js:41:16)
  at Object.keys.forEach.filename (<path>\node_modules\karma-coverage-istanbul-reporter\src\reporter.js:46:44)
  at Array.forEach (<anonymous>)
  at addCoverage (<path>\node_modules\karma-coverage-istanbul-reporter\src\reporter.js:43:27)
  at createReport (<path>\node_modules\karma-coverage-istanbul-reporter\src\reporter.js:98:7)
  at browsers.forEach.browser (<path>\node_modules\karma-coverage-istanbul-reporter\src\reporter.js:213:9)
  at Array.forEach (<anonymous>)
  at Collection.forEach (<path>\node_modules\karma\lib\browser_collection.js:93:21)
  at CoverageIstanbulReporter.onRunComplete (<path>\node_modules\karma-coverage-istanbul-reporter\src\reporter.js:212:16)
  at Server.<anonymous> (<path>\node_modules\karma\lib\events.js:13:22)
  at emitTwo (events.js:131:20)
  at Server.emit (events.js:214:7)
  at Timeout._onTimeout (<path>\node_modules\karma\lib\executor.js:51:17)
  at ontimeout (timers.js:498:11)
  at tryOnTimeout (timers.js:323:5)

一些调试显示伊斯坦布尔内部使用的qazxsw poi没有属性qazxsw poi。我试图将它添加到几个配置文件,没有运气。

在我的sourceMap我有:

sourceRoot

很奇怪的是,我的项目包含一个带有单独测试的库。它们使用相同的配置。

事实:

  • Angular 6.1.0
  • 茉莉花2.99.1
  • Karma 1.7.1
  • Karma Coverage伊斯坦布尔记者:2.0.0

谢谢!

angular typescript code-coverage source-maps istanbul
1个回答
0
投票

解决了!

我有一个自定义库,它是项目的一部分,用于与karam.conf.js组件。

在父组件的coverageIstanbulReporter: { dir: require('path').join(__dirname, '../coverage'), reports: ['html', 'lcovonly'], fixWebpackSourcePaths: true } 中,我像这样导入它:

<clib-element></clib-element>

相反,我不得不模拟使用过的组件。我写了这个模拟组件:

component.spec.ts

在测试文件中声明它:

TestBed.configureTestingModule({
  ...
  imports: [ CLibModule ] /* Don't do it like this */
})

......错误消失了。希望这也有助于其他人!

© www.soinside.com 2019 - 2024. All rights reserved.