Jest + Enzyme 测试带Event object传参的function

在处理列表数据操作时,经常会遇到一些需要单独处理每个数据项的操作。

例如:

可编辑邮寄地址列表示例

当用户点击移除,需要将当前所属的输入框移除,示例代码:

removeEmailToItem = (e) =>{
    const { form } = this.props;
    const currentIndex = parseInt(e.target.dataset.index);
    let keys = form.getFieldValue('keys');
    keys = keys.filter((email, emailIndex) => {
        return email.key !== currentIndex;
    });
    form.setFieldsValue({
        keys
    });
}
 Unit test:

it('removeEmailToItem function testing', () => {
    const wrapper = mount(<SendEmail {...props} />);
    const mockedEvent = { target: {dataset: {index:0}} }
    wrapper.find(".remove-email-item-button").first().simulate("click", mockedEvent);
    expect(wrapper.node.fieldsStore.getFieldsValue().keys.length).toEqual(3);
});

这里用到simulate这个方法。

simulate(event, args)

参数

event (String): 被模拟触发的事件(例如:click/submit)

…args (Any [optional]): 传递给事件处理器的模拟event object。