这是我的问题:在AngularJS项目中,我使用Babel 6(ES2015 + stage3 +装饰器),SystemJS和Karma + Jasmine。
一切正常,除了代码覆盖:我找不到一个很好的方法来获取ES6代码的覆盖率报告,而不是编译ES5。
我有一些限制:
此问题特别针对本地html覆盖率报告,但我还需要一种可在SonarQube中使用的格式。
在这个问题上似乎有一个巨大的支持湖(特别是对于Decorators和SystemJS),因此,除了Github上的一些问题之外,stackoverflow社区也许可以分享一种方法来实现这一点。
如果您需要一些额外内容,您可以在Github(Sedona-Solutions/sdn-angularjs-seed)上看到此项目,并查看相关问题(Sedona-Solutions/sdn-angularjs-seed#5),并提及我可以找到的所有相关问题和项目。 / p>
关于remap-istanbul
这是我的翻译和映射gulp任务:
gulp.task('es6', function () {
return gulp.src(paths.source, { base: 'app' })
.pipe(plumber())
.pipe(changed(paths.output, { extension: '.js' }))
.pipe(sourcemaps.init())
.pipe(babel(compilerOptions))
.pipe(ngAnnotate({
sourceMap: true,
gulpWarnings: false
}))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest(paths.output))
});
噶覆盖
coverageReporter: {
reporters: [
{
type: 'json',
dir: 'target/coverage/',
subdir: '.',
file: 'coverage-final.json'
}
]
}
和测试:重新映射gulp任务:
gulp.task('test:remap', ['test'], function (done) {
return gulp.src(paths.coverage + '/coverage-final.json')
.pipe(remapIstanbul({
reports: {
'json': paths.coverage + '/coverage.json',
'html': paths.coverage + '/html-remaped/'
},
fail: true,
useAbsolutePaths: true
}));
});
由于the first remap-istanbul issue,我收到以下错误:
C:\...\sdn-angularjs-seed\node_modules\remap-istanbul\node_modules\istanbul\lib\report\html.js:288
text = structuredText[startLine].text;
^
TypeError: Cannot read property 'text' of undefined
at C:\...\sdn-angularjs-seed\node_modules\remap-istanbul\node_modules\istanbul\lib\report\html.js:288:53
您可以看到相应的代码on github。
在某些映射生成或路径上可能会出错...如果您这么认为,请告诉我。
答案 0 :(得分:-1)
karma-coverage + remap-istanbul应该可以正常工作