带有 React-testing-library 的 Antd Datepicker Jest 未设置输入值
Posted
技术标签:
【中文标题】带有 React-testing-library 的 Antd Datepicker Jest 未设置输入值【英文标题】:Antd Date Picker Jests with React-testing-library not setting the input value 【发布时间】:2021-10-17 00:13:47 【问题描述】:我正在使用 antd (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)
它似乎也不起作用。如果你们对这个问题有任何解决方案,我很乐意接受。
谢谢。
【问题讨论】:
【参考方案1】:几个小时后..我想出了一个解决方案。
// 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'));
如果您尝试更改输入的值而不进行这样的操作,它可能无法正常工作,请记住,输入默认设置为只读,每当您尝试通过键入来更改值时将重置输入。
【讨论】:
以上是关于带有 React-testing-library 的 Antd Datepicker Jest 未设置输入值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 React、Jest 和 React-testing-library 为带有令牌的 api 调用编写单元测试?
使用带有 jest 和 react-testing-library 的 next/head 测试 next.js 标题,给出误报
如何使用 react-testing-library 测试包装在 withStyles 中的样式化 Material-UI 组件?
使用 `react-testing-library` 和 `cypress` 有啥区别?