Я пытаюсь выполнить модульное тестирование директивы angularJS, но когда я высмеиваю элемент, я получаю сообщение об ошибке Несколько директив, запрашивающих включение:
Директива выглядит следующим образом:
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();
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,
};
},
}
})
Имя templateUrl - anchoredPane
, которое будет отображаться в шаблоне HTML как anchored-pane
, и оно также извлекает атрибут anchoredPaneCfg
из атрибута шаблона anchored-pane
.
В моем тесте я инициализирую шаблон следующим образом:
it("initializes correctly", () => {
// Arrange
const element = angular.element(
"<anchored-pane anchored-pane='something'>Here goes the template</anchored-pane>"
);
// Act
$compile(element)($scope);
$scope.$digest();
// ....something
// Assert
// some assertions
});
Карма выдает ошибку
Несколько директив [anchoredPane (module: beckon.flint.anchoredPane)), anchoredPane (модуль: beckon.flint.anchoredPane)], запрашивающий включение на: <anchored-pane anchored-pane="something" class="ng-scope">
- Ошибка: $ compile: multidir Разногласия по нескольким директивам
Я попытался использовать:
const element = angular.element(
"<div anchored-pane='something'>Here goes the template</div>"
);
и:
const element = angular.element(
"<anchored-pane><div anchored-pane='something' anchored-pane='a thing'>Here goes the template</div></anchored-pane>"
);
Но тогда он не передает значение anchoredPaneCfg
. Карма выдает ошибку
TypeError: Невозможно прочитать свойство 'clickSelector' из неопределенного
Как правильно смоделировать эту директиву, чтобы принять anchoredPaneCfg, не выдавая ошибку множественного включения?