首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular JS + jasmine测试控制器

Angular JS + jasmine测试控制器
EN

Stack Overflow用户
提问于 2013-04-05 04:01:59
回答 1查看 2.9K关注 0票数 4

我有一个简单的controllersSpec.coffee Angular应用程序代码测试:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
<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>

这个抛出错误,关于angular-mock中的'$modules‘:

代码语言:javascript
复制
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)

你能帮我解决那个问题吗?这是我的第一个测试angular应用程序。

EN

回答 1

Stack Overflow用户

发布于 2013-04-11 07:12:57

我认为你需要更多的Angular包。我的跑步机里包括了整个套间。我不认为我真的需要它们,但我已经尝试删除了一些,但失败了。具体地说,我有以下几点:

代码语言:javascript
复制
angular.js
angular-bootstrap.js
angular-cookies.js
angular-loader.js
angular-mocks.js
angular-resource.js
angular-sanitize.js

此外,在您的测试中,您可能希望拥有

代码语言:javascript
复制
controller = null
scope = null

在你的describe块中的任何东西之前。否则,您的控制器和作用域最终将作为inject函数中的局部变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15820644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档