我正在使用jest
和react-testing-library
我把它煮下来了,所以显然这不是我的完整测试。 为什么这样的代码:
test('Share renders', () => {
const { getByText } = render(<Share />)
})
给我这个控制台错误:
When testing, code that causes React state updates should be wrapped into act
但是此代码:
test('Share renders', async () => {
const { getByText } = render(<Share />)
const share = await waitForElement(() => getByText(/Share/i))
expect(share).toBeVisible()
})
不是吗?
我的Share
组件进行了调用,以在useEffect
挂钩中获取一些用户信息并将其设置为state。这会导致在第一次安装组件时重新渲染。然后,由于状态更新,第一个示例向我抱怨。那讲得通。我的问题是,waitForElement
突然在做什么,使第二个示例没有出现错误?呈现的组件没有任何变化,然后立即更新...但是现在错误消失了???