Javascript 使用nodejs进行测试时,svgElement.getBoundingClientRect()始终返回零

Javascript 使用nodejs进行测试时,svgElement.getBoundingClientRect()始终返回零,javascript,node.js,testing,jestjs,Javascript,Node.js,Testing,Jestjs,我创建了一些svg元素,并希望使用 svgElement.getBoundingClientRect() 如果将svgElement附加到文档中,则我的代码可以工作 document.body.appendChild(svgElement) 如果我在浏览器中运行代码(谷歌浏览器) 但是,在使用nodejs和jest进行测试时,生成的边界矩形的宽度和高度始终为零 =>如何使用nodejs正确运行代码?nodejs使用jsdom,并且getBoundingClientRect仅用于返回正确的属性

我创建了一些svg元素,并希望使用

svgElement.getBoundingClientRect()
如果将svgElement附加到文档中,则我的代码可以工作

document.body.appendChild(svgElement)
如果我在浏览器中运行代码(谷歌浏览器)

但是,在使用nodejs和jest进行测试时,生成的边界矩形的宽度和高度始终为零


=>如何使用nodejs正确运行代码?

nodejs使用jsdom,并且
getBoundingClientRect
仅用于返回正确的属性,而不是正确的值

也看到

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

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

Nodejs使用jsdom和
getBoundingClientRect
仅用于返回正确的属性,而不是正确的值

也看到

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

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

是的,这是真的。原因:JSDOM实际上不是渲染引擎(不基于内容计算宽度,不拉伸或剪裁元素等)。所以我们也应该嘲笑这种方法,是的,这是真的。原因:JSDOM实际上不是渲染引擎(不基于内容计算宽度,不拉伸或剪裁元素等)。因此,我们应该嘲笑这种方法,以及