2016-02-12 52 views
0

在初始状态下,我有例如app.module.js有角的应用程序的下面的代码:Istanbul.js - 从源代码中删除装饰

'use strict'; 

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

为了让测试覆盖端到端量角器测试中,我运用gulp-istanbul

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

这里做的事情是我的消化与伊斯坦布尔的所有文件,所以他们将有代码覆盖装修里面,就像我的文件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

但是'karma-coverage'以某种方式为单元测试做了这件事,对吧? – zmii

+0

是的,它确实处理这些文件,但不同之处在于它随后提供了检测文件。它不会删除仪表代码。 – MBielski