在处理列表数据操作时,经常会遇到一些需要单独处理每个数据项的操作。
例如:
当用户点击,需要将当前所属的输入框移除,示例代码:
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。