2013-04-04 43 views
3

我在controllersSpec.coffee角应用程序代码的简单测试:角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

你的解决方案是什么?我现在遇到了这个问题! – 2013-10-02 06:30:21

回答

0

我认为你需要一些更多的Angular软件包。我将整个套房都包括在我的跑步者中。我不认为我真的需要他们,但我已经尝试删除一些并且失败。具体来说,我正好有这些:

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函数中的局部变量。