用Jest&Enzyme模拟按钮单击

时间:2020-08-13 12:08:29

标签: jestjs enzyme


我正在尝试用笑话和酵素模拟点击,而我是React的测试库的新手。
我的组件正在使用Material UI。

这是我要测试的代码的一部分:

                    <div>
                        <Typography className={classes.instructions}>
                            All steps completed - you're finished
                        </Typography>
                        <Button onClick={handleNext} className={classes.button}>
                            Next
                        </Button>
                    </div>

在这一部分中,我要测试按钮的点击情况
到目前为止,这是我所做的:

 let wrapper;
    const handleNext = jest.fn();
    beforeEach(() => {
        wrapper = mount(<ModelStepper handleNext={handleNext}/>)
    })
  it("handleNext increment", () => {
        const btn = wrapper.find(Button).at(1)
        expect(handleNext).toBeCalledTimes(0);
        btn.simulate("click");
        expect(handleNext).toBeCalledTimes(1);
    })

由于某种原因,我无法单击它,我已经在控制台上记录了该按钮的文本,并且它是我想要单击的正确按钮。

谢谢!

2 个答案:

答案 0 :(得分:0)

只需将以下行:const btn = wrapper.find(Button).at(1)更改为const btn = wrapper.find(Button).at(0)

索引总是从0开始。

答案 1 :(得分:0)

我处于类似的情况,但是我的按钮在表格内。 对于这种情况,有效的方法是:

wrapper.find('button').simulate('submit');

它将触发事件并评估更改。