2013-04-04 5 views
3

У меня есть простой тест в controllersSpec.coffee Угловая App код:Угловое JS + тестирование жасмин контроллер

describe 'Controllers', -> 
    beforeEach -> 
    angular.module 'app' 
    describe 'MainCtrl', -> 
    beforeEach inject ($controller, $rootScope) -> 
     scope = $rootScope.$new() 
     ctrl = $controller 'MainCtrl', $scope: scope 
    it 'should be true', -> 
     expect(true).toEqual(true) 

И SpecRunner.html файл для тестирования:

<html lang="eu"> 
    <head> 
    <title>Angular Test Runner</title> 
    <script src="../js/libs/jquery.js"></script> 
    <script src="lib/jasmine.js"></script> 
    <script src="lib/jasmine-html.js"></script> 
    <script src="../js/libs/underscore.js"></script> 
    <script src="../js/libs/angular.js"></script> 
    <script src="lib/angular/angular-mocks.js"></script> 
    <script src="lib/angular/angular-scenario.js" ng-autotest></script> 
    <script src="../js/controllers.js"></script> 
    <script src="controllersSpec.js"></script> 
    <script type="text/javascript"> 
    (function() { 
    var jasmineEnv = jasmine.getEnv(); 
    jasmineEnv.updateInterval = 1000; 
     var htmlReporter = new jasmine.HtmlReporter(); 
    jasmineEnv.addReporter(htmlReporter); 
    jasmineEnv.specFilter = function(spec) { 
     return htmlReporter.specFilter(spec); 
     }; 
    var currentWindowOnload = window.onload; 
    window.onload = function() { 
     if (currentWindowOnload) { 
     currentWindowOnload(); 
      } 
      execJasmine(); 
     }; 
     function execJasmine() { 
     jasmineEnv.execute(); 
    } 
    })(); 
    </script> 
    </head> 
    <body> 
    </body> 
</html> 

Это бросить ошибку, о ' $ modules 'in angular-mock:

TypeError: Cannot read property '$modules' of null 
    at Object.workFn (http://localhost/lolobot/test/lib/angular/angular-mocks.js:1745:25) 
    at Object.<anonymous> (http://localhost/lolobot/test/lib/angular/angular-scenario.js:24673:54) 
    at Array.forEach (native) 
    at Object.forEach (http://localhost/lolobot/test/lib/angular/angular-scenario.js:9538:11) 

Может ли помочь мне с этой проблемой? Это мое первое тестовое угловое приложение.

+0

Какое у вас решение? Я встречаю это прямо сейчас! –

ответ

0

Я думаю, вам нужно еще несколько Угловые упаковки. Я включаю весь набор в свой бегун. Я не думаю, что на самом деле они нужны всем, но я попытался удалить несколько и имел неудачи. В частности, у меня точно такие:

angular.js 
angular-bootstrap.js 
angular-cookies.js 
angular-loader.js 
angular-mocks.js 
angular-resource.js 
angular-sanitize.js 

Кроме того, в тестах, вы, вероятно, хотите иметь

controller = null 
scope = null 

, прежде чем что-нибудь еще в вашем describe блоке. В противном случае ваш контроллер и область попадают в локальные переменные в вашей функции inject.

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