Reactjs 使用Jest更改元素大小

Reactjs 使用Jest更改元素大小,reactjs,jestjs,reactjs-testutils,Reactjs,Jestjs,Reactjs Testutils,我的组件中有以下代码 var rect = ReactDOM.findDOMNode(this).getBoundingClientRect(); 我在组件中使用和渲染图形。但当我运行测试时,有任何svg标记。我假设这是因为所有rect的字段都等于0 以下是浏览器中console.log(rect)的输出: ClientRect{顶部:89,右侧:808,底部:689,左侧:8,宽度:800…} 当我运行测试时: {底部:0,高度:0,左侧:0,右侧:0,顶部:0,宽度:0} 那么有没有办法设

我的组件中有以下代码

var rect = ReactDOM.findDOMNode(this).getBoundingClientRect();
我在组件中使用和渲染图形。但当我运行测试时,有任何svg标记。我假设这是因为所有rect的字段都等于0

以下是浏览器中console.log(rect)的输出:

ClientRect{顶部:89,右侧:808,底部:689,左侧:8,宽度:800…}

当我运行测试时:

{底部:0,高度:0,左侧:0,右侧:0,顶部:0,宽度:0}


那么有没有办法设置元素的大小呢?

我的解决方案是模拟
getBoundingClientRect
(我目前正在使用jest 16.0.1)

descripe('Mock`getBoundingClientRect`',()=>{
在每个之前(()=>{
Element.prototype.getBoundingClientRect=jest.fn(()=>{
返回{
宽度:120,
身高:120,
排名:0,
左:0,,
底部:0,
右:0,,
}
});
});
它('应该模拟'getBoundingClientRect',()=>{
常量元素=document.createElement('span');
const rect=element.getBoundingClientRect();
期望(直线宽度).toEqual(120);
});

});谢谢你的回答。只是想知道,“元素”从何而来?@WayneChiu AFAIK,jest使用jsdom来模拟DOM类(如元素等)-注意:如果有多个描述具有getBoundingClientRect的特定情况,则需要为该特定描述再次设置此模拟,因为全局对象原型正在发生变化