У меня есть следующий код, который я пытаюсь проверить:
//MAIN FILE
angular
.module("beckon.flint.anchoredPane", ["beckon.flint.utils.eventService"])
.directive("anchoredPane", function() {
return {
replace: false,
restrict: "AE",
templateUrl: "anchoredPane",
transclude: true,
scope: {
anchoredPaneCfg: "=anchoredPane",
},
link: function($scope, element) {
var clickListeningElement = element.parent();
debugger;
if ($scope.anchoredPaneCfg.clickSelector) {
clickListeningElement = element.closest(
$scope.anchoredPaneCfg.clickSelector
);
}
$scope.elements = {
root: element,
contentPlaceholder: element.find("#contentPlaceholder"),
anchoredPane: element.find(".anchored-pane"),
clickListeningElement: clickListeningElement,
};
},
controller: function(
$scope,
$rootScope,
$compile,
$timeout,
$transclude,
eventService,
onTopService
) {
//controller code
},
};
});
})();
В своих тестах я смог до сих пор издеваться над включенной директивой следующим образом:
//TEST FILE
it("initializes correctly", () => {
// Arrange
const element = angular.element("<div><div anchored-pane='anchored-pane'>Here goes the template</div></div>");
const getIsolatedScope = (element) => element.isolateScope() || element.scope();
// Act
$compile(element)($scope);
$scope.$digest();
const isolatedScope = getIsolatedScope(element);
// Assert
expect(isolatedScope.elements).toBeDefined();
});
В нормальном сценарии это утверждение должно работать:
// Assert
expect(isolatedScope.elements).toBeDefined();
Но я получаю сообщение об ошибке "Ожидается, что не определено". Оказывается, мой isolatedScope
не привязан к основному файлу $scope
, как и должно быть.
Я пытался заменить метод getIsolatedScope
в моих тестах следующим:
const isolatedScope = getIsolatedScope(element["0"].childNodes[0]);
Но я получаю ошибку "element.isolateScope () не является функцией" Пожалуйста, как правильно связать isolatedScope
в моих тестах?