2015-10-09 57 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或其他)。