使用Jest更改元素大小

时间:2016-07-29 10:29:20

标签: reactjs jestjs reactjs-testutils

我的组件中有以下代码

var rect = ReactDOM.findDOMNode(this).getBoundingClientRect();

我使用d3js并在组件中渲染图形。但是当我运行测试时,有任何 svg 标签。我认为这是因为所有 rect 字段等于0。

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

  

ClientRect {top:89,right:808,bottom:689,left:8,width:800 ...}

当我运行测试时:

  

{bottom:0,height:0,left:0,right:0,top:0,width:0}

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

1 个答案:

答案 0 :(得分:16)

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

describe('Mock `getBoundingClientRect`', () => {
    beforeEach(() => {
        Element.prototype.getBoundingClientRect = jest.fn(() => {
            return {
                width: 120,
                height: 120,
                top: 0,
                left: 0,
                bottom: 0,
                right: 0,
            }
        });
    });
    it('should mock `getBoundingClientRect`', () => {
        const element = document.createElement('span');
        const rect = element.getBoundingClientRect();
        expect(rect.width).toEqual(120);
    });

});