Вы передаете строку
const htmlElement = '<div>Some element</div>'
на самом деле это не элемент HTML.Так что у него нет метода getBoundingClientRect
.
Может быть, вы могли бы как-то использовать JSDOM createElement
для создания элемента.Но я полагаю, что для целей тестирования еще лучше создать объект с использованием только части свойств HTMLElement.
Просто так:
const htmlElement = {
getBoundingClientRect: {top: <what you need>, left: <what you need>}
... any other methods expected
}
Почему это лучше, чем использование фактического конструктора HTMLElement?Поскольку вы тестируете какой-то конкретный модуль, а не сам механизм рендеринга DOM, вам не нужно хранить эту запись с полными и непротиворечивыми данными.Проще издеваться только над тем, что тебе нужно.Более ясно, что на самом деле нужно вашему модулю, посмотрев на этот макет.И вы можете предоставить макет, который почти невозможно получить, используя createElement
(скажем, getBoundingClientRect
может вернуть top: Infinity
).