首页 > 解决方案 > 如何使用 jest 为存在 if 条件的函数编写测试用例

问题描述

我有一个像下面这样的 onUpdate 函数

onUpdate = data => {
    if (parseInt(data.quantity) < 1) {
        this.props.setErrorPopUp({
            message: 'You cannot set quantity to zero.Use delete actions',
            action: 'danger',
            time: '5000'
        })
    } else {
        this.props.formSubmitAttempt({
            product: data.id,
            quantity: data.quantity
        })
    }
}

我想用 jest 编写一个测试来测试这两个场景。由于我是开玩笑的新手,我该如何测试这种情况谢谢

标签: reactjsjestjs

解决方案


您可以使用实例获取 onUpdate 函数并将 setErrorPopup 和 formSubmitAttempt 作为模拟传递。

const props = {
    setErrorPopUp: jest.fn();
    formSubmitAttempt: jest.fn();

}
const wrapper = shallow(<Component {...props} />
wrapper.instance().onUpdate({ quantity: 0});
expect(props.setErrorPopUp).toHaveBeenCalled();

wrapper.instance().onUpdate({ quantity: 3 });
expect(props.formSubmitAttempt).toHaveBeenCalled();

推荐阅读