Javascript 使用nodejs进行测试时,svgElement.getBoundingClientRect()始终返回零
我创建了一些svg元素,并希望使用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仅用于返回正确的属性
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实际上不是渲染引擎(不基于内容计算宽度,不拉伸或剪裁元素等)。因此,我们应该嘲笑这种方法,以及