【问题标题】:AngularJS Testing Controller with Karma使用 Karma 的 AngularJS 测试控制器
【发布时间】:2014-02-09 01:41:21
【问题描述】:

我的控制器是:

angular.module('mean').controller('ItemsController', ['$scope', function ($scope) {
  $scope.contentTemplate = '/views/items/index.html';
  $scope.subMenu = [
    {name: 'Create Item', location: '/items/create'}
  ];
}]);

我的测试很简单:

  describe('ItemsController', function () {
    var scope;

    beforeEach(module('mean'));

    beforeEach(inject(function($controller, $rootScope) {
      scope = $rootScope.new();
      $controller('ItemsController', {
        $scope: scope
      });

    }));


    it('should have sub menu items loaded properly', function () {
      expect(scope.subMenu.length).toBe(1);
    });

  });

我想要测试是否有一个子菜单项。相反,我得到的错误是:

PhantomJS 1.9.7 (Mac OS X) ItemsController 应该有子菜单项 正确加载失败类型错误:“未定义”不是函数 (评估'$rootScope.new()')

$rootScope 不是注入了吗?那么为什么它是未定义的呢?

【问题讨论】:

    标签: angularjs unit-testing karma-runner


    【解决方案1】:

    你想要以美元符号开头的方法:

    scope = $rootScope.$new();
    //                 ^
    

    这应该可以解决它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-10
      • 1970-01-01
      • 2014-09-28
      • 1970-01-01
      • 2015-01-23
      • 2016-09-13
      • 2015-10-03
      • 2015-11-29
      相关资源
      最近更新 更多