ich diesen Mocha Test haben:Anwendungsbereich Methode in AngularJS Richtlinie ist keine Funktion, wenn Unit-Tests
'use strict';
///////////////////////////////////
describe('all admin page directives', function() {
let scope, $compile, element, tmp;
beforeEach(module('app'));
beforeEach(module('templates'));
afterEach(function() {
scope.$destroy();
});
describe('category', function() {
beforeEach(inject(function ($injector) {
$compile = $injector.get('$compile');
var $rootScope = $injector.get('$rootScope');
scope = $rootScope.$new();
scope.rightSidebarData = {};
$compile('<create-category right-sidebar-data="rightSidebarData"></create-category>')(scope);
return scope.$digest();
}));
it('should do something', function() {
scope.updateModel(); // <<<<<< ERROR HERE
});
});
});
hier ist meine Richtlinie:
/* globals angular */
angular.module('app').directive('createCategory',
['UserService', 'AssignmentService', 'NotificationService', 'USER', 'UserInfoService', 'AlertService', '$window',
function (UserService, AssignmentService, NotificationService, USER, UserInfoService, AlertService, $window) {
return {
scope: {
rightSidebarData: '=',
},
restrict: 'EA',
templateUrl: "pages/admin/views/templates/category/create-category.html",
link: function ($scope, el, attrs) {
$scope.rightSidebarData.setOrReset = function() {
$scope.setOrReset();
};
},
controller: function ($scope, FUNCTIONAL_TEAM_ENUM, CATEGORY_ENUM, CategoryService) {
const rsd = $scope.rsd = $scope.rightSidebarData;
$scope.setOrReset = function() {...};
$scope.updateModel = function() {...};
$scope.saveModel = function() {...};
},
};
}
]);
Ich erhalte diese Fehlermeldung:
TypeError: scope.updateModel is not a function
Weiß jemand, was ich in meinem Test tun muss, um das zu beheben? Woher weiß ich außerdem, ob ich $rootScope.$new()
verwenden muss oder ob ich den Geltungsbereich des übergeordneten Controllers bestehen soll?
Die $ kompilieren Service einen neuen Isolat Rahmen für das schafft ' create-category'-Direktive. Also ist die Funktion 'updateModel' diesem untergeordneten Bereich zugeordnet; nicht der Root-Bereich. – georgeawg
danke, das macht Sinn, wie greife ich auf den Kindbereich zu? etwas wie 'getIsolateScope()' richtig? –
Siehe [angular.element API-Referenz] (https://docs.angularjs.org/api/ng/function/angular.element). – georgeawg