plu*_*een 4 react-testing-library user-event
简而言之,我有一个带有 onclick 事件的表行。我通过以下方式得到这个
const row = screen.getByRole('row', { name: /My row/i })
await userEvent.click(row)
Run Code Online (Sandbox Code Playgroud)
这不会触发事件处理程序。但是,如果我这样做:
const row = screen.getByRole('row', { name: /My row/i })
fireEvent.click(row)
Run Code Online (Sandbox Code Playgroud)
这很好用。
我知道 userEvent 使用更多事件来模拟行单击,但事件处理程序在实时应用程序中也可以正常工作。有什么原因可能userEvent无法工作吗?
就像大多数非常奇怪的事情一样,问题出在其他地方。但出于文档目的,这是由于应用程序在执行我的断言时重新渲染所致。会发生的是这样的:
findByText('My User')传递并获取我的 DOM 元素findByText不再是当前活动的 DOM 元素click火灾在获取我的行之前,我更改了之前的行以检查所有数据加载,并且它似乎始终有效。这意味着我必须断言与我的测试无关的事情,但这可能是因为我的应用程序的用户体验很差,加载时会弹出一些东西?
不管怎样,我不是 100% 确信这是原因,但如果
userEvent.click没有触发事件,或者toBeInTheDocument即使成功了,还是失败findBy了这可能是由于您断言所有内容均已加载后应用程序重新渲染所致。希望我可以拯救别人三天的痛苦,就像我必须找到这个简单的事实一样......
| 归档时间: |
|
| 查看次数: |
1262 次 |
| 最近记录: |