gpt4 book ai didi

reactjs - 如何使用 React 测试库测试 Material UI 选择组件

转载 作者:行者123 更新时间:2023-12-02 11:20:31 27 4
gpt4 key购买 nike

我正在使用 react 测试库进行组件测试。 Material UI 选择选项在弹出窗口中呈现。调试不列出选项。在选择选项的情况下如何触发点击事件。

以下是我选择的组件。

import TextField from '@material-ui/core/TextField';
import { MenuItem } from '@material-ui/core';

<TextField
select
id="fruit"
inputProps={{ id: "fruit" }}
SelectProps={{
SelectDisplayProps: {
'data-testid': "fruit"
}
}}
fullWidth
variant="outlined"
{...errors}
>
{options.map(option => (
<MenuItem key={option[valueFieldName]} value={option[valueFieldName]}>
{option[labelFieldName]}
</MenuItem>
))}
</TextField>

什么查询选择器应该用于 onclick 事件。

这是 debug() 记录该字段的方式
    <div class="MuiFormControl-root MuiTextField-root MuiFormControl-fullWidth">
<label
class="MuiFormLabel-root MuiInputLabel-root MuiInputLabel-formControl MuiInputLabel-animated MuiInputLabel-outlined"
data-shrink="false"
for="fruit"
id="fruit-label"
>
Action on failure
</label>
<div class="MuiInputBase-root MuiOutlinedInput-root MuiInputBase-fullWidth MuiInputBase-formControl">
<div
aria-haspopup="listbox"
aria-labelledby="fruit-label fruit"
class="MuiSelect-root MuiSelect-select MuiSelect-selectMenu MuiSelect-outlined MuiInputBase-input MuiOutlinedInput-input"
data-testid="fruit"
id="fruit"
role="button"
tabindex="0"
>
<span>​</span>
</div>
<input name="fruit" type="hidden" value="" />
<svg
aria-hidden="true"
class="MuiSvgIcon-root MuiSelect-icon MuiSelect-iconOutlined"
focusable="false"
role="presentation"
viewBox="0 0 24 24"
>
<path d="M7 10l5 5 5-5z" />
</svg>
<fieldset
aria-hidden="true"
class="PrivateNotchedOutline-root-242 MuiOutlinedInput-notchedOutline"
style="padding-left: 8px;"
>
<legend
class="PrivateNotchedOutline-legend-243"
style="width: 0.01px;"
>
<span>​</span>
</legend>
</fieldset>
</div>
</div>

我在同一个表单上有另一个字段,它根据此选择字段的值呈现。

我想测试这样的东西:
const selectField = screen.getByTestId('fruit');
fireEvent.change(selectField, {
target: { value: 'APPLE' }
});
expect(selectField.value).toBe('APPLE');
expect(anotherField).toBeInTheDocument();

它在第二次期望中失败。
测试此类表单的正确方法是什么?

最佳答案

您应该通过 data-testid支持 inputProps喜欢

<TextField
select
id="fruit"
inputProps={{ id: "fruit", 'data-testid': "fruit" }}
fullWidth
variant="outlined"
{...errors}
>

然后你可以做
const fruit = getByTestId('fruit');
fireEvent.change(fruit, { target: { value: 'APPLE' } });

关于reactjs - 如何使用 React 测试库测试 Material UI 选择组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59662339/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com