2016-03-12 2 views
1

Я хочу использовать единичный тест в угловом, но webapp, который я работаю над ним, создается на его структуре. например:Как получить доступ к угловому модулю приложения, который определен в self invoke?

(function() { 
'use strict'; 
angular 
    .module('app', [ 
    'ngAnimate', 
    'ui.load', 
    'ui.jp', 
    'oc.lazyLoad' 
    ]);})(); 

и один из его контроллеров:

(function() { 
'use strict'; 
angular 
    .module('app') 
    .controller('EditorCtrl', EditorCtrl); 

    function EditorCtrl($scope) { 
     var vm = $scope; 
     vm.options = { 
     toolbar: [ 
      ['style', ['bold', 'italic', 'underline', 'clear']], 
     ] 
     }; 
    }})(); 

, и я понятия не имею, как использовать модульное тестирование этого приложения, потому что мой тест контроллера не могу найти. это мой контроллер и тест:

(function() { 
    'use strict'; 
    angular 
    .module('app') 
    .controller('DashboardCtrl', dashboard); 
    describe('test dashboard', function() { 

     beforeEach(module('DashboardCtrl')); 

     var $controller; 

     beforeEach(inject(function (_$controller_) { 
     $controller = _$controller_; 
     })); 

     describe('sum', function() { 
     it('1 + 1 should equal 2', function() { 
      var $scope = {}; 
      var controller = $controller('DashboardCtrl', {$scope: $scope}); 
      $scope.x = 1; 
      $scope.y = 2; 
      $scope.sum(); 
      expect($scope.z).toBe(3); 
     }); 

     it('z should default to zero', function() { 
      var $scope = {}; 
      var controller = $controller('DashboardCtrl', {$scope: $scope}); 
      expect($scope.z).toBe(0); 
     }); 
     }); 

    }); 
    function dashboard($scope) { 
    $scope.name = 'Dashboard'; 
    $scope.z = 0; 
    $scope.sum = function() { 
     $scope.z = $scope.x + $scope.y; 
    }; 
    } 


})(); 

и в тесте карма показать мне эту ошибку:

Error: [$injector:modulerr] Failed to instantiate module DashboardCtrl due to: 
    Error: [$injector:nomod] Module 'DashboardCtrl' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument. 

, которые указывают, что не могу найти «DashboardCtrl» контроллер.

ответ

0

Когда модульное тестирование использование $ контроллер для получения дескриптора на экземпляр контроллера https://docs.angularjs.org/api/ng/service/ $ контроллера как var ctrlToTest = $controller('EditorCtrl')(newTestScope); Чтобы создать новый тест рамку вы можете использовать var newTestScope = $rootScope.$new()

+0

Используйте это в файле контроллера? – moslem

1

проблемы решено добавить все модули в files варианты karma.conf.js

точка является событием озера одного из модулей, которые были введены, является основным модулем, который здесь app остановите свой тест, поэтому добавляется дополнение к вашему контроллеру, которое необходимо добавить во весь модуль.

 Смежные вопросы

  • Нет связанных вопросов^_^