我创建了一些svg元素,并希望确定其大小

svgElement.getBoundingClientRect()


如果将svgElement附加到文档中,我的代码将起作用

document.body.appendChild(svgElement)


以及是否在浏览器(谷歌浏览器)中运行代码。

但是,在使用nodejs和jest进行测试时,结果边界rect的宽度和高度始终为零。

=>我该怎么做才能用nodejs正确运行代码?

最佳答案

Node.js使用jsdom,而实现getBoundingClientRect仅返回正确的属性,而不返回正确的值。

另请参见https://github.com/jsdom/jsdom/issues/653

对于测试,应该模拟方法getBoundingClientRect,例如:

spyOn(svgElement,'getBoundingClientRect').and.returnValue({
    width: 10,
    height: 10,
    top: 0,
    left: 0,
    right: 10,
    bottom: 10
});

关于javascript - svgElement.getBoundingClientRect()在使用Node.js进行测试时始终返回零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60816461/

10-10 03:52