Istanbul.js - 从源代码中删除装饰

时间:2016-02-12 14:23:13

标签: javascript angularjs protractor code-coverage istanbul

在初始状态下我有例如 app.module.js ,包含以下Angular应用程序代码:

'use strict';

var app = angular.module('bumblebee', []);

为了获得e2e量角器测试的测试覆盖率,我应用了gulp-istanbul

gulp.task('decorate:code:istanbul', function() {
    return gulp.src('./app/')
        .pipe(istanbul({
            includeUntested: true,
            coverageVariable: '__coverage__'
        }))
        .pipe(gulp.dest(./app/));
});

它的作用是使用istanbul消化我的所有文件,这样他们就可以在里面进行代码覆盖装饰,就像我的文件 app.module.js

"use strict";
var __cov_BJkerWMhn194664Vc2WfiA = (Function('return this'))();
if (!__cov_BJkerWMhn194664Vc2WfiA.__coverage__) {
    __cov_BJkerWMhn194664Vc2WfiA.__coverage__ = {};
}
__cov_BJkerWMhn194664Vc2WfiA = __cov_BJkerWMhn194664Vc2WfiA.__coverage__;
if (!(__cov_BJkerWMhn194664Vc2WfiA['c:\\project\\app.js'])) {
    __cov_BJkerWMhn194664Vc2WfiA['c:\\project\\app.js'] = {
        "path": "c:\\project\\app.js",
        "s": {"1": 0, "2": 0},
        "b": {},
        "f": {"1": 0},
        "fnMap": {
            "1": {
                "name": "(anonymous_1)",
                "line": 6,
                "loc": {"start": {"line": 6, "column": 9}, "end": {"line": 6, "column": 20}}
            }
        },
        "statementMap": {
            "1": {"start": {"line": 3, "column": 0}, "end": {"line": 3, "column": 171}}
        },
        "branchMap": {}
    };
}
__cov_BJkerWMhn194664Vc2WfiA = __cov_BJkerWMhn194664Vc2WfiA['c:\\project\\app.js'];
__cov_BJkerWMhn194664Vc2WfiA.s['1']++;
var app = angular.module('bumblebee', []);

然后在运行测试并获取源代码覆盖率后,我想从app.module.js中删除所有这些附加信息。有没有办法做到这一点?

P.S。目前我正在将所有源复制到新目录,使用istanbul对其进行检测,对此检测代码运行e2e测试,获取代码覆盖率并将其用作原始代码。在我看来,这不是很有效。

1 个答案:

答案 0 :(得分:1)

删除该检测代码是一场噩梦。如果不是更长时间的话,你需要像删除它一样长时间去除它。将要检测的代码复制到新文件夹,检测它,然后使用该代码确定覆盖率是一种非常常见的做法。效率与否,就是如何最好地覆盖伊斯坦布尔。