Я принимаю детские шаги в Жасмине, пожалуйста, несите меня за любые вопиющие ошибки. Я пишу тестовые примеры, чтобы проверить, не является ли метод контроллера - transformData называемые, детали нижеЖасмин - модульное тестирование директивы: получение «undefined» не является объектом
Моя Директива
angular.module('myModule')
.directive('myDirective', [ function()
{
'use strict';
return {
restrict: 'E',
templateUrl: '/static/quality/scripts/directives/hh-star-rating.html',
scope: {
varA:'@',
},
controller: [
'$scope', '$controller',
function ($scope, $controller) {
$controller('otherController', {$scope: $scope})
.columns(
$scope.x,
$scope.y,
$scope.series
);
$scope.transformData = function(data)
{
/// does something;
return data;
};
}
],
Мой Spec
describe('directive - hh-star-ratings', function() {
'use strict';
angular.module('myModule', [])
.directive('myContainer', function() {
return {
restrict: 'E',
priority: 100000,
terminal: true,
template: '<div></div>',
controller: function($scope) {
$scope.loadingData = true;
this.stopLoading = function() {
$scope.loadingData = false;
};
}
}
});
var result_set = {
//some data-transform-req
};
beforeEach(module('myModule'));
var element, scope, controller;
beforeEach(inject(function($rootScope, $compile) {
scope = $rootScope.$new();
element = angular.element(
'<my-container> <my-directive> </my-directive> </my-container>'
);
$compile(element)(scope);
scope.$digest();
controller = element.controller('myDirective');
}));
it('should call the transformData', function() {
controller.transformData(result_set);
scope.$apply();
scope.transformData.should.have.been.called;
});
})
Выпуск: Когда я запускаю тест, я получаю следующую ошибку
TypeError: 'undefined' is not an object (evaluating 'controller.transformData')
Что я делаю неправильно? Спасибо заранее за ваше время.
Я попробовал некоторые исправления, которые не помогло :-( – Vasan
Вероятно 'контроллер = element.controller («myDirective»); 'возвращает undefined – Michael