2015-10-09 80 views
0

我用下面的一飲而盡任務browserify standalone option生成UMD模塊:Browserify獨立的測試覆蓋率(UMD)模塊

gulp.task("bundle-source", function() { 
    var b = browserify({ 
    standalone : 'inversify', 
    entries: __dirname + "/build/source/inversify.js", 
    debug: true 
    }); 

的獨立選項包裝用下面的代碼庫中的代碼,以確保其能作爲一個Node模塊,一個AMD模塊或一個Global:

!function(n) { 
    if ("object" == typeof exports && "undefined" != typeof module) module.exports = n(); 
    else if ("function" == typeof define && define.amd) define([], n); 
    else { 
     var e; 
     e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this, e.inversify = n() 
    } 
}(function() { 
    return function n(e, t, i) { 
     function r(u, p) { 
      if (!t[u]) { 
       if (!e[u]) { 
        var s = "function" == typeof require && require; 
        if (!p && s) return s(u, !0); 
        if (o) return o(u, !0); 
        var c = new Error("Cannot find module '" + u + "'"); 
        throw c.code = "MODULE_NOT_FOUND", c 
       } 
       var f = t[u] = { 
        exports: {} 
       }; 
       e[u][0].call(f.exports, function(n) { 
        var t = e[u][1][n]; 
        return r(t ? t : n) 
       }, f, f.exports, n, e, t, i) 
      } 
      return t[u].exports 
     } 
     for (var o = "function" == typeof require && require, u = 0; u < i.length; u++) r(i[u]); 
     return r 
    }({ 

    // The rest of the library code ... 

我正在使用伊斯坦布爾試圖實現100%我的問題是UMD代碼片段的某些部分未經過測試。例如,我沒有使用AMD所以像下面的那些行從未執行:

\\ ... 
else if ("function" == typeof define && define.amd) define([], n); 
\\ ... 

\\ ... 
if (!e[u]) { 
    var s = "function" == typeof require && require; 
    if (!p && s) return s(u, !0); 
    if (o) return o(u, !0); 
    var c = new Error("Cannot find module '" + u + "'"); 
    throw c.code = "MODULE_NOT_FOUND", c 
} 
\\ ... 

這是阻止我實現100%的測試覆蓋率。你知道我怎樣才能解決這個問題?

謝謝!

+0

嘗試涵蓋browserify的樣板文件真的很有價值嗎? – JMM

+0

嗯,它是一個開源項目,能夠顯示100%的測試覆蓋率標誌將鼓勵一些人信任該項目,我相信這是非常有價值的東西。 –

+0

在我看來,這是一個愚蠢的指標,因爲這一切都取決於用戶信任你實現良好測試的程度。如果他們願意以徽章爲基礎來信任你,也許他們願意相信你來覆蓋重要的東西,而不用擔心像UMD包裝器那樣微不足道的東西。 – JMM

回答

2

我建議你看看實施伊斯坦​​布爾的ignoring features。該頁面專門討論忽略UMD包裝,雖然在browserify的情況下,您可能需要做額外的工作才能完成該工作,例如製作沒有standalone的包並自己實施UMD包裝(使用ForbesLindesay/umd或其他)。