1

Я только начал угловое тестирование с кармой и жасмином. Я написал два основных теста. Один из двух тестов проходит, но другой не работает. Я не могу отлаживать его. Я искал везде, и он должен работать в соответствии с различными учебниками. Должна быть доступна переменная $ scope. Я получаю следующее сообщение об ошибке (и много текста, см screenshot):Karma + Angular undefined error

  at C:/totalflatline-2.0/public/lib/angular/angular.js:4362 
      at forEach (C:/totalflatline-2.0/public/lib/angular/angular.js:336) 
      at loadModules (C:/totalflatline-2.0/public/lib/angular/angular.js:4364) 
      at createInjector (C:/totalflatline-2.0/public/lib/angular/angular.js:4248) 
      at workFn (C:/totalflatline-2.0/public/lib/angular-mocks/angular-mocks.js:2409) 
      at C:/totalflatline-2.0/public/lib/angular-mocks/angular-mocks.js:2392 
      at C:/totalflatline-2.0/public/shared/tests/unit/shared.client.controller.unit.tests.js: 
5 
      at C:/totalflatline-2.0/node_modules/karma-jasmine/lib/boot.js:126 
      at C:/totalflatline-2.0/node_modules/karma-jasmine/lib/adapter.js:171 
      at http://localhost:9876/karma.js:210 
      at http://localhost:9876/context.html:83 
     TypeError: 'undefined' is not an object (evaluating '$scope.test') 
      at C:/totalflatline-2.0/public/shared/tests/unit/shared.client.controller.unit.tests.js: 
9 
      at C:/totalflatline-2.0/node_modules/karma-jasmine/lib/boot.js:126 
      at C:/totalflatline-2.0/node_modules/karma-jasmine/lib/adapter.js:171 
      at http://localhost:9876/karma.js:210 
      at http://localhost:9876/context.html:83 
hantomJS 1.9.8 (Windows 7): Executed 2 of 2 (1 FAILED) (0.402 secs/0.025 secs) 

Два теста является следующим. Первая проходит, а другая дает указанную выше неопределенную ошибку.

Тот, который проходит:

describe('Testing MEAN Main Module', function() { 
    var mainModule; 
    beforeEach(function() { 
     mainModule = angular.module('mean'); 
    }); 
    it('Should be registered', function() { 
     expect(mainModule).toBeDefined(); 
     console.log('Success!'); 
    }); 
}); 

Тот, который терпит неудачу:

describe('Testing the Shared Stats controller', function(){ 
    var SharedController,$scope; 

    beforeEach(function(){ 
     // load the module you're testing. 
     module('mean'); 

     inject(function($rootScope,$controller){ 
      // create a scope object for us to use. 
      $scope = $rootScope.$new(); 

      SharedController = $controller('shared.StatsController',{ 
       $scope:$scope 
      }); 
     }); 
    }); 
    it('Should contain a user object',function(){ 
     // User cannot be undefined 
     expect($scope.test).toEqual('yoo'); 
    }); 

}); 

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

// Create the 'shared' controller 
angular.module('shared').controller('shared.StatsController', [ '$scope', 
    function($scope) { 
     $scope.test = 'yoo'; 
    } 
]); 

Угловая версия 1.4 и карма являются версиями:

"karma": "~0.12.23", 
"karma-jasmine": "~0.2.2", 
"karma-phantomjs-launcher": "~0.1.4", 

Я весь день ломаю себе шею. Я надеюсь, что кто-то с большим количеством знаний об испытании углового может помочь мне.

ответ

0

Ваш угловой контроллер не создан правильно. Чтобы «получить» или загрузить модуль, вы используете angular.module('moduleName', []), а второй аргумент - это массив с зависимостями. Таким образом, это должно быть:

angular.module('shared', []).controller('StatsController', [ '$scope', 
    function($scope) { 
     $scope.test = 'yoo'; 
    } 
]); 
+0

Спасибо большое! Это имело значение! :) – Shark