React Hook Form + Chakra UI 中“无法找到带有文本的元素”错误的原因和解决方案

35 阅读1分钟

介绍 当我使用 React Hook Form 和 Chakra UI 创建必填输入表单时, 遇到了一个问题:错误信息在 UI 中显示正确,但在 Jest 测试中却显示错误。 在本文中,我将分享原因和解决方案。

问题 当使用 React Hook Form + Chakra UI 测试必填字段时, 错误消息在生产中正确显示,但 Jest 测试失败。

Unable to find an element with the text: ID is required 该元素在 UI 中显示正确,但在测试中却显示错误。 原因是 React Hook Form 的验证错误没有立即反映在 DOM 中。 因此,当我使用 getByText 搜索该元素时,它还没有出现在 DOM 中,导致测试失败。

解决方案 我使用测试库中的 findByText 来等待找到元素。

这失败了。

expect(screen.getByText("ID is required")).toBeInTheDocument(); 通过异步支持成功。

expect(await screen.findByText("ID is required")).toBeInTheDocument(); 这解决了测试失败但 UI 显示的差异。查看更多www.youjiutian.com