Я пишу модульный тест для проверки директивы Angular 5, которая использует document.querySelectorAll для выбора некоторых элементов.Я создаю приведенную ниже службу-макет, которая возвращает элементы div, соответствующие критериям selector
.
class MockDocumentService {
querySelectorAll(selector: string) {
const doc = document.implementation.createHTMLDocument('');
doc.open();
doc.write(`<html><body><div>
<div MaxHeight="testMaxHeight">some text</div>
<div style="height:100px" MaxHeight="testMaxHeight">a taller div</div>
<div MaxHeight="testMaxHeight">some text</div>
</div></body></html>`);
doc.close();
return doc.querySelectorAll(selector);
}
}
Он успешно возвращает элементы, однако в моей директиве есть следующее:
const elements = documentService.querySelectorAll(selector);
let maxHeight = 0;
for (let i = 0; i < elements.length; i++) {
maxHeight = (<HTMLElement>elements[i]).offsetHeight > maxHeight ? (<HTMLElement>elements[i]).offsetHeight : maxHeight;
}
Наконец, проблема, offsetHeight всегда равна нулю (обратите внимание, что один из элементов divимеет атрибут style, устанавливающий высоту 100px).Как мне получить offsetHeight, чтобы сообщалось правильно.Еще одно замечание: код директивы отлично работает при реальном использовании.