2016-05-19 15 views
0

Wir haben ein Projekt (eckig) und einige Untestests (Jasmin + Sinon), die bei der Minimierung einige Probleme verursacht. Für den tatsächlichen Code haben wir diese Probleme gelöst, indem wir unter Verwendung des statisch typisierten String-Arrays, z. ['locationService', 'etcService']. Leider hat die Minification für die Unittests einige Probleme zu lösen. Als Beispiel:

module(function($provide){ 
    $provide.service('etc..',...); 
} 

-Code oben wird sofort unusuable da der Anbieter Variable so etwas wie ‚a‘ umbenannt wird. Ich habe versucht, es ein bisschen zwicken die Funktion mit so etwas wie unten Verpackung:

function injectTest($provide){ 
    // do the same stuff 
} 
injectTest.$inject = ['$provide']; 

, die eine empfohlene Lösung in einigen anderen Online-Beiträge war. Das Problem ist bei Modulen, das funktioniert wirklich nicht. Ich habe beide versucht:

module(angular.injector().invoke(injectTest)); // which results in 'Unknown provider: $provideProvider <- $provide 

und

module(injectTest); // which results in 'Unknown provider: nProvider <- n' 

Gibt es eine Möglichkeit, die $ Anbieter in ein Modul zu injizieren, ohne auf minification zu brechen?

Antwort

0

Inline Injektion:

var myFN = ['$provide', function($provide){ 
    // do stuff 
}] 

Nun, wenn Sie eine Funktion auf eine 3rd-Party-Bibliothek binden mögen, wo Sie Service benötigen ließen Sie sich in meinem Beispiel sagen, dass Ihre Funktion den Dienst CRUDService benötigen und ein params Objekte aus dem 3. erhalten Party:

Ich benutze nur Inline-Injektion anstelle von $ inject, Geschmackssache, denke ich.