如何使用 data-testid 测试没有标签的 MUI 复选框?
How can I test a MUI check box with no label using data-testid?
我想测试一个没有标签的复选框。关键是还有其他复选框,所以我不能使用 getByRole。
我尝试过使用 data-testid,但显然它不起作用。
我应该如何检查该复选框是否已选中 (toBeChecked())?
<Checkbox
data-testid={item?.id}
key={item?.id}
id={item?.id.toString()}
color="secondary"
checked={item?.checked}
disabled={hasAll}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
if (item) {
item.checked = e.target.checked;
setFinalData(updateItemInArray(finalData, {
item,
index,
}));
}
}}
/>
执行此操作的正确方法是在您的复选框中添加一个 aria-label
,以便屏幕阅读器能够正确宣布:
<Checkbox inputProps={{ 'aria-label': 'Select row 1' }} />
这样,您就可以在测试中使用 getByLabelText
。
select
如果你想使用data-testid
,你可以像aria-label
一样把它放在复选框上:
<Checkbox inputProps={{ 'data-testid': 'checkbox1' }} />
请注意,如果您使用的是 Typescript,则必须将 inputProps 转换为 React.InputHTMLAttributes<HTMLInputElement>
,因为数据属性不是 InputHTMLAttributes 的一部分:
<Checkbox inputProps={{ 'data-testid': 'checkbox1' } as React.InputHTMLAttributes<HTMLInputElement>} />
我想测试一个没有标签的复选框。关键是还有其他复选框,所以我不能使用 getByRole。
我尝试过使用 data-testid,但显然它不起作用。
我应该如何检查该复选框是否已选中 (toBeChecked())?
<Checkbox
data-testid={item?.id}
key={item?.id}
id={item?.id.toString()}
color="secondary"
checked={item?.checked}
disabled={hasAll}
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
if (item) {
item.checked = e.target.checked;
setFinalData(updateItemInArray(finalData, {
item,
index,
}));
}
}}
/>
执行此操作的正确方法是在您的复选框中添加一个 aria-label
,以便屏幕阅读器能够正确宣布:
<Checkbox inputProps={{ 'aria-label': 'Select row 1' }} />
这样,您就可以在测试中使用 getByLabelText
。
如果你想使用data-testid
,你可以像aria-label
一样把它放在复选框上:
<Checkbox inputProps={{ 'data-testid': 'checkbox1' }} />
请注意,如果您使用的是 Typescript,则必须将 inputProps 转换为 React.InputHTMLAttributes<HTMLInputElement>
,因为数据属性不是 InputHTMLAttributes 的一部分:
<Checkbox inputProps={{ 'data-testid': 'checkbox1' } as React.InputHTMLAttributes<HTMLInputElement>} />