带有 React-testing-library 的 Antd Datepicker Jest 未设置输入值

Antd Date Picker Jests with React-testing-library not setting the input value

我用的是antd的range date picker(v4.x)

 <StyledDatePicker inputReadOnly={false} value={dateRange} onChange={onChange} />

在我的测试文件中,我正在执行以下操作:

fireEvent.change(rtl.getByPlaceholderText('Start date'), {
  target: { value: '2020-01-01' },
});

fireEvent.change(rtl.getByPlaceholderText('End date'), {
  target: { value: '2020-03-03' },
});

fireEvent.keyPress(rtl.getByPlaceholderText('End date'), { key: 'Enter', code: 13 });

await waitFor(() => fireEvent.click(rtl.getByText('Apply')));

我在两次触发事件之间尝试了几次控制台登录,以查看输入是否确实具有正确的值,但它始终为空。

我也试过:

userEvent.type(rtl.getByPlaceHolderText(...), myValue)

好像也没用。如果你们有解决这个问题的方法,我很乐意接受。

谢谢。

几个小时后..我找到了解决方案。

// Click on the filter icon 
fireEvent.click(rtl.container.querySelector('th:nth-child(3) .ant-table-filter-trigger'));
// Mouse down on element, to select input and trigger modal opening
fireEvent.mouseDown(rtl.getByPlaceholderText('Start date'));
// Writing the value of the desired date
fireEvent.change(rtl.getByPlaceholderText('Start date'), {
  target: { value: '2020-01-01' },
});
// If the date format is valid, antd will highligh the written date, so we clicking on that one
fireEvent.click(document.querySelector('.ant-picker-cell-selected'));

如果您尝试更改输入的值而不像那样继续操作,它可能不会起作用,请记住输入默认设置为只读,无论何时您将尝试仅使用输入它将重置输入。