问题标签 [react-hooks-testing-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1246 浏览

reactjs - 测试异步反应钩子时我应该在哪里使用act?

使用我测试异步反应挂钩时,@testing-library/react-hooks我看到一条错误消息。错误消息提到包装代码,act(...)但我不确定我应该在哪里执行此操作。

我试图将部分代码包装进去,act(...)但每次尝试都会导致测试失败。

0 投票
1 回答
898 浏览

reactjs - 使用 act 不会更新状态?

我有一个像这样的自定义钩子:

至于我的测试,我有这样的事情:

测试“'应该将值更新为true'”的地方,当我登录时isOpen,它保持为假。我不确定为什么它不更新,除非act它不做它正在做的事情?

0 投票
2 回答
3018 浏览

reactjs - 如何测试可以将 html 元素的 ref 传递给它的反应钩子

我有一个自定义钩子,它可以将可选的 ref 作为对象的属性传递给它,该钩子将其作为参数:

该代码有效,但我现在正在尝试使用 @testing-library/react-hooks 库为此react-testing-library编写测试

我正在使用renderHook@ testing-library/react-hooks,但我不知道如何在组件外部创建引用或模拟引用。

0 投票
1 回答
2209 浏览

reactjs - 如何使用 react-hooks-testing-library 测试自定义 async/await 钩子

我创建了一个自定义反应钩子,它应该处理所有不太重要的 api 请求,我不想将其存储在 redux 状态中。Hook 工作正常,但我无法测试它。我的测试设置是开玩笑和酶,但我决定在这里也尝试一下react-hooks-testing-library

到目前为止,我尝试的是首先使用fetch-mock库来模拟 fetch 请求,效果很好。接下来,我使用renderHook来自 react-hooks-testing-library 的方法渲染钩子。不幸的是,看起来我不太了解该waitForNextUpdate方法。

这就是我的钩子的样子。

使用Api钩子

Hook 可以采用我想测试的 3 种不同的状态组合。不幸的是,我不知道怎么做。

加载数据中:

加载数据:

错误:

这就是我的测试此时的样子:

调用API函数

0 投票
1 回答
472 浏览

reactjs - 自定义 Hook:如何在组件卸载时不调用测试集状态

卸载组件时不调用测试集状态

我有一个自定义钩子,它在页面加载时调用一个承诺来设置数据。为了确保当我使用取消请求的组件卸载时不会调用数据/错误的设置状态,如下所示:

我的测试是:

但我收到错误:

有人可以指导如何测试吗?

谢谢

0 投票
1 回答
3040 浏览

javascript - 测试使用 useEffect 钩子和 apollo 的自定义上下文钩子

我创建了一个上下文,该上下文公开了一个易于使用的钩子。在这个钩子中,我已经确保在呈现页面之前预加载了一些数据,如下所示:

我想使用测试库对此进行测试,在阅读了一些文章和 github 问题后,我得出以下结论:

const wrapper = ({ children }) => ( {children} );

可悲的是,它说当前为空。我希望这是因为useEffect导致状态更新,因此首先返回 null (默认值)。更新前。这就是我介绍waitForNextUpdate.

但是,它给了我以下错误:

警告:传递给 TestRenderer.act(...) 函数的回调不能返回任何内容。

关于如何解决这个问题的任何想法?

0 投票
0 回答
685 浏览

node.js - 使用 apollo useLazyQuery 的 customPollingHook 的单元测试

所以我编写了一个自定义轮询钩子,它使用 useContext 和 useLazyQuery 钩子。我想为此编写一个单元测试,它应该涵盖它的返回值状态和副作用。

到目前为止,我已经做到了这么多,但我不太确定如何继续。有小费吗?

0 投票
0 回答
153 浏览

reactjs - 如何测试在渲染时引发错误的自定义 Hook

我有一个自定义钩子,如果在执行钩子时满足条件,它会抛出错误。我想测试是否抛出了错误,所以如果抛出错误,测试应该通过。

我尝试将 Hook 包装在 中Error Boundary,但 result.error 未定义。那么如何测试是否引发了错误react-hooks-testing-library

0 投票
1 回答
9907 浏览

reactjs - 如何使用 useReducer 钩子测试组件?

减速器

零件

测试

上面的测试示例不起作用,但用于演示我想要实现的目标。并且实际上会呈现 0 div,因为组件中声明的初始状态包含 0 个项目。

  1. 为了测试目的,我将如何修改减速器的状态或更改它部署的初始状态?

  2. 我习惯于在多个组件中使用 Redux 减速器,但是 useReducer 需要一个传递的 initialState ......这引发了一个问题:react-hook 的减速器是否可以通过多个组件作为单个实例使用,还是始终是 2 个单独的实例?

0 投票
1 回答
1999 浏览

reactjs - 使用 renderHook 测试钩子

我想测试一个自定义钩子,它被实现为一个帮助函数,以便与其他钩子重用代码。它正在调用useDispatchuseSelector在其实现中,以及将数据保存在会话存储中:

和测试:

无论我尝试什么,测试只到达“INSIDE”控制台日志并且不打印“THE OBJECT:”控制台日志。测试本身仍然通过,所以就像以useSelector某种方式停止了其余的 renderHook 执行。

我猜这与测试没有连接商店的事实有关......在这种情况下可以做些什么来测试redux?