我正在尝试使用react-testing-library 测试Select 组件的onChange事件。
我使用getByTestId效果很好的元素获取元素,然后设置元素的值,然后调用fireEvent.change(select);但onChange从未调用过并且状态从未更新过。
我已经尝试使用 select 组件本身以及获取对底层input元素的引用,但都不起作用。
任何解决方案?或者这是一个已知问题?
我有一个使用 Jest 和 React 测试库的单元测试来填充和提交表单。问题是在将 Material UI 升级到版本 4 后,我的单元测试无法选择一个选项。错误是:“无法找到带有文本的元素:巴西”巴西是我尝试选择的文本选项。使用 Material UI 版本 3 工作得很好。
测试代码 - 给出错误:“无法找到带有文本的元素:巴西。”
fireEvent.click(getByTestId("id-country"));
const countryOption = await waitForElement(() => getByText("Brazil"));
fireEvent.click(countryOption);
Run Code Online (Sandbox Code Playgroud)
反应组件代码
<Grid item xs={12} sm={4}>
<TextField
id="select-country"
name="country"
select
helperText={touched.country ? errors.country : ""}
error={touched.country && Boolean(errors.country)}
required
label="Country"
onChange={handleChange}
value={values.country}
className={classes.selectField}
SelectProps={{
SelectDisplayProps: {
"data-testid": "id-country"
}
}}
>
{countryEnum.map(country => (
<MenuItem key={country.type} value={country.type}>
{country.label}
</MenuItem>
))}
</TextField>
</Grid>
Run Code Online (Sandbox Code Playgroud)