Прежде чем задать свой реальный вопрос, у меня есть другой... Имеет ли смысл работать с unit test DOM в директивах Angular?
Например, здесь моя полная функция связывания:
function linkFn(scope, element) {
var ribbon = element[0];
var nav = ribbon.children[0];
scope.ctrl.ribbonItemClick = function (index) {
var itemOffsetLeft;
var itemOffsetRight;
var item;
if (scope.ctrl.model.selectedIndex === index) {
return;
}
scope.ctrl.model.selectedIndex = index;
item = nav.querySelectorAll('.item')[index];
itemOffsetLeft = item.offsetLeft - ribbon.offsetLeft;
itemOffsetRight = itemOffsetLeft + item.clientWidth;
if (itemOffsetLeft < nav.scrollLeft) {
nav.scrollLeft = itemOffsetLeft - MAGIC_PADDING;
}
if(itemOffsetRight > nav.clientWidth + nav.scrollLeft) {
nav.scrollLeft = itemOffsetRight - nav.clientWidth + MAGIC_PADDING;
}
this.itemClick({
item: scope.ctrl.model.items[index],
index: index
});
$location.path(scope.ctrl.model.items[index].href);
};
$timeout(function $timeout() {
var item = nav.querySelector('.item.selected');
nav.scrollLeft = item.offsetLeft - ribbon.offsetLeft - MAGIC_PADDING;
});
}
Это для прокручиваемого компонента с вкладками, и я не знаю, как протестировать 3 экземпляра nav.scrollLeft = x
.
Первые два оператора if
выполняются, когда щелкнут элемент, который только частично виден. Элемент left/right (каждый if
) будет привязан к левой/правой границе компонента.
Третий, это указать выбранный элемент, если он не отображается при загрузке компонента.
Как я unit test это с кармой/жасмином. это даже имеет смысл сделать это, или я должен выполнять функциональные тесты с помощью Protractor?