我们可以在 React 测试库中使用的最佳选择器是getByRole(). 这很好,因为我们可以通过它的角色和可访问性名称来选择我们的节点。
如果我们有一个渲染组件,其中有多个按钮 - 所以我不能只使用getByRole('button')- 并且按钮没有文本,这意味着它没有可访问的名称,而是我们有一个图像,我该怎么办关于选择?
我知道图像的可访问名称来自alt属性,我也知道我可以使用替代方法,例如data-testid,但是getByRole如果有机会,我更愿意使用,因此我的测试类似于我的软件的使用方式。
<Button onClick{() => void}>
<img
src={"foo"}
alt={"alt text"}
/>
<Button/>
Run Code Online (Sandbox Code Playgroud)
getByRole('button')会抛出一个错误,因为包装组件上会有多个按钮
getAllByRole('button')将返回一个包含所有按钮的数组,但是我只想要带有图像的一个
我试过了,getByRole('button', {name: "alt text"})但这不起作用,它有点道理,因为它是一个不同的节点。
如果有一种合乎逻辑的方法来使用它,getByRole或者我必须放弃并求助于诸如 data-testid 之类的东西,有什么想法吗?
谢谢!