开玩笑/酶:无法使用.first()或.at()函数模拟元素(无法读取未定义的'props'属性)

时间:2019-07-31 14:43:48

标签: reactjs jestjs enzyme

为解释这个问题,这是我的代码的简化版本。

<div class="button-wrapper">
  <button type="submit"><span>Apply</span></button>
  <button type="submit"><span>Reset</span></button>
</div>

我一直在尝试单击上面div中的第一个按钮。

所以,我写了如下代码。

it('should prevent submitting xxx', () => {
        const wrapper = shallow(<Component { ...baseProps } />);

        console.log(wrapper.find('.button-wrapper'));
        // it prints ShallowWrapper { length: 1 }

        console.log(wrapper.find('.button-wrapper > button').at(0));
        // it prints "ShallowWrapper { length: 1 }" as well

        wrapper.find('.button-wrapper').simulate('click');
        // it doesn't throw any error

        wrapper.find('.button-wrapper > button').at(0).simulate('click');
        // it results in an error, saying "Cannot read property of 'props' of undefined"


        expect(baseProps.updateX).not.toHaveBeenCalled();
    });

可以使用wrapper.find()找到.button-wrapper div元素,并将其视为ShallowWrapper

第一个button也是如此。

不过,当我将.simulate('click')放到按钮上时,会导致"Cannot read property of 'props' of undefined"错误。

.at(0)替换first()不会改变结果。

您是否看到此错误的任何可能原因?任何建议将不胜感激。

0 个答案:

没有答案