2015-10-09 1 views
0

-je utiliser la browserify standalone option dans les tâches de Gulp suivantes pour générer un module UMD:couverture de test de autonome Browserify (UMD) modules

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

L'option autonome enveloppe le code de la bibliothèque avec le code suivant pour vous assurer qu'il peut être chargé en tant que module de noeud, un module AMD ou 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 ... 

J'utilise istanbul pour essayer d'obtenir une couverture de test 100%. Mes problèmes sont que certaines parties de l'extrait de code UMD ne sont pas testés. Par exemple, je ne suis pas en utilisant AMD si des lignes comme celles ci-dessous ne sont jamais exécutées:

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

ou

\\ ... 
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 
} 
\\ ... 

Ce qui me empêche d'atteindre une couverture de test 100%. Savez-vous comment puis-je contourner ce problème?

Merci!

+0

Est-ce vraiment utile d'essayer de couvrir le passe-temps de browserify? – JMM

+0

Eh bien, c'est pour un projet open-source et pouvoir afficher le badge de couverture de test 100% encouragera certaines personnes à faire confiance au projet et je crois que c'est quelque chose de vraiment précieux. –

+0

À mon avis, c'est une sorte de métrique stupide, car tout dépend de la confiance que les utilisateurs accordent à la mise en place de bons tests. S'ils sont prêts à vous faire confiance sur la base d'un badge, peut-être qu'ils sont prêts à vous faire confiance pour couvrir les choses importantes et ne pas s'inquiéter de quelque chose d'insignifiant comme un emballage UMD. – JMM

Répondre

2

Je vous suggère de regarder dans la mise en œuvre ignoring features d'Istanbul. Cette page traite spécifiquement d'ignorer les wrappers UMD, bien que dans le cas de browserify vous fassiez un travail supplémentaire pour accomplir cela, comme faire le bundle sans standalone et implémentez le wrapper UMD vous-même (en utilisant ForbesLindesay/umd ou autre).