2014-02-09 7 views
6

My Controller является:AngularJS Тестирование контроллера с Karma

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 should have sub menu items loaded properly FAILED TypeError: 'undefined' is not a function (evaluating '$rootScope.new()')

Не вводится ли $ rootScope? Так почему это не определено?

ответ

19

Вы хотите метод, который начинается со знаком доллара:

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

Это должно исправить.

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