javascript - 如果没有鼠标点击事件,我如何对 onClick 进行单元测试?

标签 javascript reactjs frontend jestjs enzyme

我有点击功能

    private onClick(e: React.MouseEvent<HTMLButtonElement>) {
        if (e) {
            this.props.log();
        }
    }

如果 onClick 有事件,我如何使用 jest 和 enzyme 进行测试

it("should not log if has mouse event", () => {
    const onClickSpy = jest.fn();
    const logSpy = jest.fn();

    const props = {
        onClick: onClickSpy,
        log: logSpy,
    };
    const subject = mountProvider(ButtonWithLog, props);
    subject.find(ButtonWithLog).simulate("click"); // I needed without mouse event
    expect(logSpy).not.toHaveBeenCalled();
});

最佳答案

it("should not log if has mouse event", () => {
    const props = {
        onClick: onClickSpy,
        log: logSpy,
    };
    const subject = mountProvider(ButtonWithLog, props);
    const onClickSpy = jest.spyOn(subject.instance(), "onClick");
    const event = { target: {} };
    subject.find(ButtonWithLog).simulate("click", event);
    expect(onClickSpy.mock.calls).to.have.length(1);
});

关于javascript - 如果没有鼠标点击事件,我如何对 onClick 进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924335/

相关文章:

javascript - onmouseup 事件未触发

javascript - 当 setState 没有立即运行时验证表单

javascript - 在一个组件中导入 CSS 就是将 CSS 影响添加到其他组件。如何和为什么?

javascript - 更改React组件中返回多个重复元素的单个元素的样式

javascript - 在一页中堆叠 vuetify 元素

javascript - Bootstrap - 在 Datepicker 中单击时关闭下拉菜单

javascript - 使用 jquery 隐藏或不显示 backgroundImage

javascript - 检查单选后如何为输入单选按钮及其标签添加相同的边框?

javascript - 向 everyauth 添加另一个步骤的最佳方法是什么?

javascript - 如何在 React 功能组件中正确设置 setInterval 计时器?