Я пытаюсь написать тест для контроллера, который имеет $rootScope.$on('accountsSet', function (event)...
. Поэтому в тестах я использую .broadcast.andCallThrough()
, который многие другие вопросы здесь, в SO, предлагают, пока он также работал раньше для меня.
Так что мой контроллер довольно прост:
angular.module ('controller.sidemenu', [])
.controller('SidemenuCtrl', function($rootScope, $scope, AccountsService) {
$rootScope.$on('accountsSet', function (event) {
$scope.accounts = AccountsService.getAccounts();
$scope.pro = AccountsService.getPro();
});
});
Любой тест прост, а также:
describe("Testing the SidemenuCtrl.", function() {
var scope, createController, accountsService;
beforeEach(function(){
angular.mock.module('trevor');
angular.mock.module('templates');
inject(function ($injector, AccountsService) {
scope = $injector.get('$rootScope');
controller = $injector.get('$controller');
accountsService = AccountsService;
createController = function() {
return controller('SidemenuCtrl', {
'$scope' : $injector.get('$rootScope'),
'AccountsService' : accountsService,
});
};
});
});
it("Should load the SidemenuCtrl.", function() {
accountsService.setPro(true);
spyOn(scope, '$broadcast').andCallThrough();
var controller = createController();
scope.$broadcast("accountsSet", true);
expect(scope.pro).toBeTruthy();
});
});
Ошибка, которую я получаю, если для spyOn(scope, '$broadcast').andCallThrough();
. Обратите внимание, что область для этих тестов - rootScope
, так что это не должно быть проблемой.
Таким образом, ошибка, которая относится к этой строке: TypeError: 'не определено' не является функцией на .../тесты/контроллеры (оценка 'spyOn (объем, '$ радиопередачу') andCallThrough().) /sidemenu.js:30
Вы не используете жасмин 2.0 Авось? Синтаксис был изменен на and.callThrough() – doldt
Да, это было так! Дело в том, что у меня есть 'karma-jasmine: 0.3.5', и я не установил' jasmine-core', как говорят документы. Это странно? – manosim
Я не думаю, что вам нужен жасмин-сердечник отдельно, а не если ваши тесты запускаются в любом случае :) Если бы мой комментарий был решением, я превращу его в короткий ответ, который вы могли бы любезно принять. – doldt