6

Otrzymuję ten wspólny błąd Błąd: [$injector:unpr] Unknown provider: $scopeProvider <- $scope z moim przypadkiem testowym. Wiem, że jest to powszechne i niewiele jest innych wątków wyjaśniających rozwiązania. Ale naprawdę nie mogłem wymyślić odpowiedzi na mój problem. Czy ktoś może wskazać mi właściwy kierunek?

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

ślad błędu:

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! Powinno to być '$ scope: scope', za które straciłeś dolara i bez potrzeby wstrzykiwania' $ rootScope', ponieważ nie jesteś zależny, ale to nie jest problem. – PSL

+0

@PSL, bardzo zobowiązany do twojej odpowiedzi. który rozwiązał mój problem, ale ostatecznie doprowadził do kolejnego. Mówi 'Błąd: [$ injector: unpr] Nieznany dostawca: meetingProvider <- meeting <- ViewMeetingCtrl'. czy możesz dać coś za ten błąd? Ponieważ nie mam nic o nazwie meetingProvider w dowolnym miejscu mojego rozwiązania. – Malik

Odpowiedz

6

wymienić

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

przez

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

Regulator musi być wstrzykiwany z argumentem o nazwie $ zakres, a nie zakres. A $ rootScope nie jest częścią wstrzykniętych współpracowników twojego kontrolera.

+0

dziękuję za odpowiedź. jednak zmodyfikowany przypadek testowy daje mi kolejny błąd mówiący 'Błąd: [$ injector: unpr] Nieznany dostawca: meetingProvider <- meeting <- ViewMeetingCtrl'. Ale nie mam nic o nazwie meetingProvider. ? – Malik

+1

Oznacza to tylko, że nie załadowano żadnego modułu zawierającego usługę o nazwie "spotkanie". Każda usługa ma powiązanego dostawcę (nawet jeśli nie jest to jednoznacznie zdefiniowane) –

+0

'ViewMeetingCtrl. $ Inject = ['zakresy', 'stan $', '$ http', '$ translate', 'notificationService', 'meetingService', ' $ modal ',' meeting ',' attachmentService ']; ' są to zależności, które wstrzyknięto w ctrl. czy to oznacza, że ​​muszę je również wstrzyknąć w teście testowym? – Malik

-1

sam błąd miałem zapomnij umieścić '$' przed scope w

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

}) 
+2

Witam, witam w SO. Nie dodawaj odpowiedzi, która po prostu powtarza już istniejącą. Zamiast tego uproś to, co już tam jest. Wiem, że w tej chwili nie masz wystarczającej liczby przedstawicieli (15), ale w tym przypadku najlepszym sposobem jest dodanie zakładki do tej strony, a gdy masz wystarczającą liczbę powtórzeń, wróć tutaj i przegłosuj. W przeciwnym razie, tak frustrujące, jak to możliwe (wszyscy byliśmy tam!), Po prostu odpuść. Ale proszę nie zamieszczać odpowiedzi, która nie dodaje niczego do tego, co już tam jest. Dziękuję Ci! –

Powiązane problemy