2015-02-26 12 views
13

Die Ausführung unterhalb des Komponententests ergibt "Fehler: [$ injector: unpr] Unbekannter Provider: $ stateProvider < - $ state". Ich habe die angular-ui-router.min.js in der Karma-Datei angehängt.

describe("Unit tests", function() { 

    var $rootScope, $injector, $state; 
    console.log("hello"); 

    beforeEach(inject(function(_$rootScope_, _$state_, _$injector_, $templateCache) { 
    console.log("hello1"); 
    $rootScope = _$rootScope_; 
    $injector = _$injector_; 
    $state = _$state_; 
    })); 

    describe("states", function() { 
    it("verify state configuration", function() { 
     var config = $state.get("DRaaS"); 
     console.log(config, "cc"); 
    }); 
    }); 
}); 

Antwort

26

Sie haben kein Modul geladen, daher ist überhaupt kein Service verfügbar. Fügen Sie dieses vor Ihrem vorEin:

beforeEach(module('ui.router')); 
+2

Diese Antwort brachte mich in die richtige Richtung. Ich habe vergessen, 'angular-ui-router' zu meiner Dateieigenschaft innerhalb von karma.conf hinzuzufügen. – Raulucco

+0

Ich hasse gerade Karma wegen der Tatsache, dass dies tatsächlich erforderlich ist! Gibt es eine Möglichkeit, den $ stateProvider nachzuspielen/stub/zu fälschen, so dass ich nicht 'ui-router' benötigen muss? Ich möchte in der Lage sein, meinen Code isoliert zu testen (daher UNIT-Tests) und all diese anderen Abhängigkeiten zu verspotten. –

+0

@AaronJanes ja es gibt. Sie können etwas wie dieses verwenden $ provider.service ('$ state', funktion ($ q) { var $ stateService = { aktuell: { url: "/", ansichten: {}, name: "root .signin " } }; Rückgabe $ stateService; }); – BobDoleForPresident

Verwandte Themen