Mat*_*one 7 reactjs jestjs react-testing-library
我有一个(Jest)测试来确定按钮是否存在:
it('renders a signup button', () => {
expect(sut.getByText('Sign up for free')).toBeDefined()
})
Run Code Online (Sandbox Code Playgroud)
这个测试是因为组件中有一个按钮和带有“免费注册”文本的标题。
Atestid
可以添加到按钮,但我更愿意遵循模拟用户行为的反应测试库原则。
我觉得用户想要“点击标有‘免费注册’的按钮是合法的”。在这种情况下,指定 HTML 元素的类型是有意义的,因为 a<button />
对用户来说是一个独特的元素,而不是<h2 />
vs <h3 />
。
如何查询标记为“免费注册”的按钮元素?例如可以getByText()
进一步限制查询选择器?
Nea*_*arl 17
我很惊讶这里没有人给出最惯用的答案。您可以使用getByRole()
和传递一个可访问的名称。可访问名称是按钮的文本或aria-label
属性值。
如果在屏幕上呈现多个具有相同角色的元素,它可用于查询特定元素。
<button>Text Button</button>
Run Code Online (Sandbox Code Playgroud)
screen.getByRole('button', {
name: /text button/i
})
Run Code Online (Sandbox Code Playgroud)
<button aria-label='edit'>
<edit-icon />
</button>
Run Code Online (Sandbox Code Playgroud)
screen.getByRole('button', {
name: /edit/i
})
Run Code Online (Sandbox Code Playgroud)
Abd*_*yal 16
你可以这样做:
getByText('Sign up for free').closest('button')
Run Code Online (Sandbox Code Playgroud)
您可以closest
从这里阅读更多信息
Gio*_*Gpx 12
您可以将选项传递给您的查询以更改其默认行为:
getByText('Sign up for free', { selector: 'button' })
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到完整的文档
归档时间: |
|
查看次数: |
7936 次 |
最近记录: |