2015-04-06 155 views
1

我一直在尋找幾個小時的解決方案,但我不能使它的工作。 我有一個控制器定義爲:AngularJS - 單元測試 - 測試控制器與自定義服務

(function() { 
    'use strict'; 
    angular.module('spaSkeleton.parCCP') 
     .controller('ParCCPCtrl', function ($scope, $mdToast, AnosLetivosService, UnidadesOrganicasService, CursosService, RelatoriosService, PareceresService) { 
    //my code 

,我要測試的這款控制器,但我有所有這些服務,我必須注入。 的服務之一是這樣的:

var app = angular.module('sigq.anosLetivos', []); 
app.service('AnosLetivosService', function (Restangular) { 
    this.getAnosLetivos = function() { 
     return Restangular.all("anos-letivos").getList({"sort": "ano_inicio"}); 
    }; 
}); 

,並在我的測試文件,我有這樣的:

describe('Parecer Controllers', function(){ 

    beforeEach(module('spaSkeleton.parCCP')); 

    beforeEach(function() { 
     module('namespace.anosLetivos'); 
     module('namespace.unidadesOrganicas'); 
     module('namespace.cursos'); 
     module('namespace.relatorios'); 
     module('namespace.pareceres'); 
     module('namespace.landingPage'); 
    }); 


    describe('Parecer Ctrl', function(){ 
     var scope, ctrl, $httpBackend; 

     beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) { 
      $httpBackend = _$httpBackend_; 
      $httpBackend.expectGET(...).respond(...); 

      scope = $rootScope.$new(); 
      ctrl = $controller('ParCtrl', {$scope: scope}); 
     })); 

    }); 

}); 

我想就如何將這些服務注入到控制器,所以我可以測試一些幫助它。我已經嘗試了很多東西。 https://docs.angularjs.org/tutorial/step_11這看起來很簡單,但不起作用,他甚至沒有注入東西,或者他?我知道在教程中的作品,但我不知道如何以及爲什麼,我不能讓它在我的項目上工作。

歡迎任何幫助:d

回答

1

所以我解決我的問題,問題是,服務有一個模塊,我在,我沒有看到測試注入。

describe('Parecer Controllers', function(){ 

    beforeEach(module('spaSkeleton.parCCP')); 

    beforeEach(function() { 
     module('sigq.anosLetivos'); 
     module('sigq.unidadesOrganicas'); 
     module('sigq.cursos'); 
     module('sigq.relatorios'); 
     module('sigq.pareceres'); 
     module('restangular'); 
     module('ngMaterial'); 
    }); 

    var $scope; 
    var $controller; 
    var $mdToast, AnosLetivosService, UnidadesOrganicasService, CursosService, RelatoriosService, PareceresService, Restangular; 

    beforeEach(inject(function(_$controller_, _$q_, _AnosLetivosService_, _UnidadesOrganicasService_, _CursosService_, 
           _RelatoriosService_, _PareceresService_, _Restangular_, _$mdToast_) { 
     $scope = {}; 
     $mdToast = _$mdToast_; 
     Restangular = _Restangular_; 
     $controller = _$controller_; 
     AnosLetivosService = _AnosLetivosService_; 
     UnidadesOrganicasService = _UnidadesOrganicasService_; 
     CursosService = _CursosService_; 
     RelatoriosService = _RelatoriosService_; 
     PareceresService = _PareceresService_; 

     $controller('ParCCPCtrl', 
      { 
       '$scope': $scope, 
       'AnosLetivosService': AnosLetivosService, 
       'UnidadesOrganicasService': UnidadesOrganicasService, 
       'CursosService': CursosService, 
       'RelatoriosService': RelatoriosService, 
       'PareceresService': PareceresService, 
       '$mdToast': $mdToast 
      }); 
    })); 

    it('should make Blog menu item active.', function() { 
     expect(1).toEqual(1); 
    }); 
}); 

,所以我需要所有這些代碼來測試我的控制器的xD