多次获得renderHook的结果

时间:2019-12-25 13:23:01

标签: reactjs react-testing-library

我有一个测试,它像这样调用renderHook

const { result } = renderHook(() => useMyHook(useDispatch()), wrapper);

这一切都很好并且可以正常工作,我可以在result.current中获得返回值。

似乎我无法使用renderHook来调用另一个钩子。如果执行完全相同的操作,则表明result已经定义。如果我将名称更改为其他名称,例如“ res”,则表示res未定义,就像它仅适用于特定名称“ result”一样。

那我怎么能不止一次打电话呢?

2 个答案:

答案 0 :(得分:0)

由于每个测试只应测试一个钩子,因此也许您必须首先卸载当前组件:

const { result, unmount } = renderHook(() => useMyHook(useDispatch()), wrapper);

// ... do what you need with result

unmount();

// call your new hook...
const { result } = renderHook(() => useNewHook(useDispatch()), wrapper);

答案 1 :(得分:0)

我可能要离开了,但看来您正在拨打这样的电话:

const { result } = renderHook(() => useMyHook(useDispatch()), wrapper);
const { result } = renderHook(() => useMyHook(useDispatch()), wrapper);

在这种情况下,您尝试重新定义变量result

您可以这样调整范围:

{
  // 1st time
  const { result } = renderHook(() => useMyHook(useDispatch()), wrapper);
  // validate result of creating 1st hook in here
}
{
  // 2nd time
  const { result } = renderHook(() => useMyHook(useDispatch()), wrapper);
  // validate result of creating 2nd hook in here
}