1

这是我的问题:在 AngularJS 项目中,我使用 Babel 6(ES2015 + stage3 + decorators)、SystemJS 和 Karma + Jasmine。

一切都很好,除了代码覆盖率:我找不到获得 ES6 代码覆盖率报告而不是转译 ES5 的好方法。

我有一些限制:

  • 没有 Github npm 依赖
  • 没有弃用的项目(如 isparta)
  • 应该在 Windows(是的,我知道,但我必须)和 GNU/Linux 上运行

这个问题特别针对本地 html 覆盖率报告,但我还需要一种可以在 SonarQube 中使用的格式。

在这个问题上似乎有一个巨大的支持湖(尤其是装饰器和 SystemJS),所以,连同 Github 上的一些问题,也许 stackoverflow 社区可以分享一种方法来做到这一点。

如果你需要一些额外的东西,你可以在 Github ( Sedona-Solutions/sdn-angularjs-seed ) 上查看这个项目,并查看相关问题 ( Sedona-Solutions/sdn-angularjs-seed#5 ) 并参考所有相关问题和我能找到的项目。

关于 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'
                }
            ]
        }

和 test:remap 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
        }));
});

由于第一个 remap-istanbul 问题,我收到以下错误:

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

可以在 github 上看到对应的代码。

这可能是某些映射生成或路径的错误……如果您这么认为,请告诉我。

4

1 回答 1

-1

karma-coverage + remap-istanbul 应该可以正常工作

于 2016-06-23T21:09:47.547 回答