2015-02-22 5 views
5

Ich habe folgende Anbieter:Unbekannter Anbieter in Karma Test

(function (angular) { 
    angular.module('app') 
     .provider('$_Config', ConfigProvider); 

    function ConfigProvider() { 
     .... //routes definition 
    } 
    ConfigProvider.prototype.$get = function() { 
    return this; 
    }; 

    ConfigProvider.prototype.getRoutes = function() {...} 

    //other prototype functions 

})(angular); 

In app.js ich es so bin mit:

app.config(function ($routeProvider, $_ConfigProvider) { 
    var routes = $_ConfigProvider.getRoutes(); 
    routes.forEach(function(route) { 
     $routeProvider 
      .when(route.route, { 
      ..... 
      }) 

} 

Alles, was gut funktionieren, bis es zum Testen bekommt. Hier ist mein Test:

describe('Provider: $_ConfigProvider', function() { 

    // load the providers module 
    beforeEach(module('app')); 

    // instantiate provider 
    var $_ConfigProvider; 
    beforeEach(inject(function (_$_Config_) { 
    $_ConfigProvider = _$_Config_; 
    })); 


    it('Should verify getRoutes function', function() { 
    var routes = $_ConfigProvider.getRoutes(); 
    expect(Object.prototype.toString.call(routes) === '[object Array]').toBe(true); 
    }); 
}); 

Wenn der Test ausgeführt erhalte ich folgende Fehlermeldung:

Error: [$injector:modulerr] Failed to instantiate module app due to: 
    Error: [$injector:unpr] Unknown provider: $_ConfigProvider 

Hinweis: Die $_ConfigProvider richtig während der Laufzeit injiziert.

Antwort

4

Die Datei, in der der Anbieter definiert ist, wird wahrscheinlich nicht in die Abhängigkeitsliste von karma.conf.js aufgenommen. Sehen Sie diese Frage:

Include dependencies in Karma test file for Angular app?

ich die $ _config etwas umbenennen würde sonst, ‚$‘ ist in der Regel für Winkelspezifische Komponenten vorbehalten.

+0

Bestellung gelöst das Problem – vlio20

+0

@ vlio20 Bestellung was genau? –

+0

Die statischen Ressourcen, Ihre 3rd-Party-Bibliotheken. – vlio20