2015-05-29 10 views
6

Ich erhalte diesen allgemeinen Fehler Fehler: [$injector:unpr] Unknown provider: $scopeProvider <- $scope mit meinem Testfall. Ich weiß, dass dies eine gewöhnliche ist, und es gibt nur wenige andere Threads, die mit Lösungen erklären. Aber ich konnte wirklich keine Antwort auf mein Problem finden. Kann mir jemand in die richtige Richtung zeigen?

ViewMeetingCtrl,

(function() { 
    'use strict'; 
    angular.module('MyApp').controller('ViewMeetingCtrl', ViewMeetingCtrl); 

    ViewMeetingCtrl.$inject = ['$scope', '$state', '$http', '$translate', 'notificationService', 'meetingService', '$modal', 'meeting', 'attachmentService']; 

    function ViewMeetingCtrl($scope, $state, $http, $translate, notificationService, meetingService, $modal, meeting, attachmentService) { 
     $scope.meeting = meeting; 
     $scope.test = "testvalue"; 
     if (meeting.Status == 'Cancelled') 
     { 
      $scope.actionButtons = false; 
     } 
     else 
     { 
      $scope.actionButtons = true; 
     } 

     //more code 
    } 
})(); 

MeetingCtrlSpec.js

describe('ViewMeetingCtrl', function() { 
    var $rootScope, scope, $controller, meetingService; 

    beforeEach(angular.mock.module('MyApp')); 

    beforeEach(inject(function ($rootScope, $controller, meetingService) { 
     scope = $rootScope.$new(); 
     $controller('ViewMeetingCtrl', { 
      meetingService: meetingService, 
      '$rootScope' : $rootScope, 
      scope: scope 
     });  

    })); 

    it('should change greeting value if name value is changed', function() { 
     //some assertion 
    }); 
}); 

Fehler-Trace:

Firefox 37.0.0 (Windows 8.1) ViewMeetingCtrl should change greeting value if name value is changed FAILED 
     Error: [$injector:unpr] Unknown provider: $scopeProvider <- $scope <- ViewMeetingCtrl 
     http://errors.angularjs.org/1.3.15/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope%20%3C-%20ViewMeetingCtrl 

     minErr/<@C:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:63:12 
     createInjector/providerCache.$injector<@C:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/ang 
ular/angular.js:4015:19 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:4162:39 
     createInjector/instanceCache.$injector<@C:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/ang 
ular/angular.js:4020:28 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:4162:39 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:4194:1 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:4211:27 
     $ControllerProvider/this.$get</<@C:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/an 
gular.js:8501:18 
     angular.mock.$ControllerDecorator</<@C:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/node_modules/angular-mo 
cks/angular-mocks.js:1878:12 
     @C:/Users/dell pc/Documents/Work/MyApp/FLIS.Client.Tests/test/company/MeetingCtrlSpec.js:8:1 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/bower_components/angular/angular.js:4203:14 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/node_modules/angular-mocks/angular-mocks.js:2436:11 
     [email protected]:/Users/dell%20pc/Documents/Work/MyApp/WebApiRole/node_modules/angular-mocks/angular-mocks 
.js:2407:25 
     @C:/Users/dell pc/Documents/Work/MyApp/Client.Tests/test/company/MeetingCtrlSpec.js:6:16 
     @C:/Users/dell pc/Documents/Work/MyApp/Client.Tests/test/company/MeetingCtrlSpec.js:1:1 
Firefox 37.0.0 (Windows 8.1): Executed 3 of 3 (1 FAILED) (0.094 secs/0.091 secs) 
+1

Typo zu setzen! Es sollte '$ scope: scope' sein, du hast einen Dollar verpasst und du musst '$ rootScope' nicht injizieren, da du nicht abhängig bist, aber das ist nicht das Problem. – PSL

+0

@PSL, viel verpflichtet für Ihre Antwort. das hat mein Problem gelöst, aber letztendlich zu einem anderen geführt. Es heißt 'Fehler: [$ injector: unpr] Unbekannter Provider: meetingProvider <- meeting <- ViewMeetingCtrl'. Kannst du etwas für diesen Fehler geben? Weil ich in meiner Lösung nirgends etwas namens MeetingProvider habe. – Malik

Antwort

6

ersetzen

$controller('ViewMeetingCtrl', { 
     meetingService: meetingService, 
     '$rootScope' : $rootScope, 
     scope: scope 
    }); 

von

$controller('ViewMeetingCtrl', { 
     meetingService: meetingService, 
     $scope: scope 
    }); 

Der Regler muss mit einem Argument namens $ Umfang injiziert werden, nicht Umfang. Und $ rootScope ist nicht Teil der injizierten Mitarbeiter Ihres Controllers.

+0

danke für Ihre Antwort. Der geänderte Testfall gibt mir jedoch einen anderen Fehler, der sagt "Fehler: [$ injector: unpr] Unbekannter Provider: meetingProvider <- meeting <- ViewMeetingCtrl". Aber ich habe nichts namens MeetingProvider. ? – Malik

+1

Das bedeutet nur, dass Sie kein Modul geladen haben, das einen Dienst namens "Besprechung" enthält. Jeder Dienst hat einen zugeordneten Provider (auch wenn er nicht explizit definiert ist) –

+0

'ViewMeetingCtrl. $ Inject = ['$ scope', '$ state', '$ http', '$ translate', 'notificationService', 'meetingService', ' $ modal ',' meeting ',' attachmentService ']; ' das sind die Abhängigkeiten, die ich in der Ctrl injizieren. Bedeutet das, dass ich sie auch im Testfall injizieren muss? – Malik

-1

gleiche Fehler, den ich vergessen hatte '$' vor scope in

app.controller("loginCtrl", function(**$**scope){ 

}) 
+2

Hallo, willkommen in SO. Bitte fügen Sie keine Antwort hinzu, die nur eine bereits bestehende wiederholt. Stattdessen, upvote die, die bereits da ist. Ich weiß, dass Sie im Moment nicht genug Rep für das haben (15), aber in diesem Fall ist der beste Weg, diese Seite zu bookmarken und, wenn Sie genügend Rep haben, kommen Sie hier zurück und upvote. Ansonsten, so frustrierend es auch sein mag (wir waren alle schon dort!), Lass es einfach gehen. Aber bitte posten Sie keine Antwort, die dem, was bereits da ist, nichts hinzufügt. Vielen Dank! –

Verwandte Themen