小编sim*_*bon的帖子

React-testing-library 的 renderHook 的 WaitForNextUpdate 超时

我正在测试一个自定义挂钩,react-testing-library它基本上可以执行以下操作:

function useHook() {
  const [state, setState] = useState();
  
  const fetch = async () => {
    const response = await httpCall();
    if (instanceof response !== Error) {
      setState("GOOD")
    } else {
      setState("BAD")
    }
  }
  
  return { state, fetch }
}
Run Code Online (Sandbox Code Playgroud)

我的测试文件是这样的:

it("test", async () => {
  const { result, waitForNextUpdate } = renderHooks(() => useHook())

  await result.current.fetch();
  expect(result.current.state).toBe(undefined)

  await waitForNextUpdate();
  expect(result.current.state).toBe("GOOD") //or at least "BAD"
})
Run Code Online (Sandbox Code Playgroud)

我写这个是因为我调用了应该触发 setState 的异步函数fetch(),我断言尚未发生重新渲染,然后waitForNextUpdate()为了等待此重新渲染,我断言state钩子返回的值现在具有值"GOOD""BAD" …

unit-testing reactjs react-testing-library react-hooks

12
推荐指数
1
解决办法
2万
查看次数