2015-05-29 19 views
6

Tôi nhận được Lỗi lỗi phổ biến này: [$injector:unpr] Unknown provider: $scopeProvider <- $scope với trường hợp thử nghiệm của tôi. Tôi biết đây là một trong những phổ biến, và có vài chủ đề khác giải thích với các giải pháp. Nhưng tôi thực sự không thể đưa ra câu trả lời cho vấn đề của tôi. ai đó có thể chỉ cho tôi phương hướng đúng không?

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 
    }); 
}); 

Lỗi dấu vết:

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! Nó phải là '$ scope: scope' bạn đã bỏ lỡ một đô la và không cần phải tiêm' $ rootScope' vì bạn không phụ thuộc dù đó không phải là vấn đề. – PSL

+0

@PSL, nhiều nghĩa vụ cho câu trả lời của bạn. đã giải quyết được vấn đề của tôi, nhưng cuối cùng dẫn đến một vấn đề khác. Nó nói 'Lỗi: [$ injector: unh] Nhà cung cấp không xác định: meetingProvider <- meeting <- ViewMeetingCtrl'. bạn có thể đưa ra một cái gì đó cho lỗi này? Bởi vì tôi không có bất cứ điều gì gọi là meetProvider bất cứ nơi nào trong giải pháp của tôi. – Malik

Trả lời

6

Thay

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

by

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

Bộ điều khiển phải được tiêm với đối số có tên là $ scope, không phạm vi. Và $ rootScope không phải là một phần của cộng tác viên được tiêm của bộ điều khiển của bạn.

+0

cảm ơn bạn đã trả lời. tuy nhiên, trường hợp thử nghiệm đã sửa đổi cho tôi một lỗi khác nói rằng 'Lỗi: [$ injector: un] Nhà cung cấp không xác định: meetingProvider <- meeting <- ViewMeetingCtrl'. Nhưng tôi không có gì gọi là meetingProvider. ? – Malik

+1

Điều đó chỉ có nghĩa là bạn chưa tải bất kỳ mô-đun nào có chứa dịch vụ có tên 'cuộc họp'. Mọi dịch vụ đều có nhà cung cấp liên quan (ngay cả khi không được xác định rõ ràng) –

+0

'ViewMeetingCtrl. $ Inject = ['$ scope', '$ state', '$ http', '$ translate', 'notificationService', 'meetingService', ' $ modal ',' meeting ',' attachmentService ']; ' đó là những phụ thuộc tôi chèn vào ctrl. có nghĩa là tôi cần phải tiêm chúng trong trường hợp thử nghiệm quá? – Malik

-1

lỗi Cùng tôi đã quên đặt '$' trước scope trong

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

}) 
+2

Xin chào, chào mừng bạn đến với SO. Vui lòng không thêm câu trả lời chỉ lặp lại câu trả lời hiện có. Thay vào đó, upvote một trong đó là đã có. Tôi biết rằng trong thời điểm này bạn không có đủ đại diện cho điều đó (15), nhưng trong trường hợp này cách tiếp cận tốt nhất là đánh dấu trang này và khi bạn có đủ đại diện, hãy quay lại đây và upvote. Nếu không, như là bực bội vì nó có thể là (tất cả chúng ta đã có!), Chỉ cần để cho nó đi. Nhưng xin vui lòng không gửi một câu trả lời mà không thêm bất cứ điều gì đến những gì đã có. Cảm ơn bạn! –

Các vấn đề liên quan