2016-02-12 81 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