我写了一些测试,触发一些受控输入,需要等待状态更改。在本例中,我应该等待状态更改,并尝试使用act函数对状态更改做出React,但无论是否使用act函数,它看起来都是一样的。什么时候需要act?
act
mrphzbgm1#
act()docs:在编写UI测试时,渲染、用户事件或数据获取等任务可以被视为与用户界面交互的“单元”。react-dom/test-utils提供了一个名为act()的帮助器,它确保在进行任何Assert之前,与这些“单元”相关的所有更新都已被处理并应用到DOM不要担心,你会知道什么时候使用它。当你测试你的组件时,你会得到一个像这样的“not wrapped in act(...)”警告这是一篇很好的文章,解释了什么时候需要使用它。手动调用act(...)的用例
avkwfej42#
当你执行一个动作,导致被测试的组件/钩子的状态更新时,你应该把它 Package 在动作中。大多数情况下,你可以通过在Assert上使用waitFor来解决这个问题。这是因为使用act Package 与否显然没有任何区别。推荐的方法是将它 Package 在act中,并且不必要地使用waitFor。这将使您的测试更快,并且可以避免使测试代码异步。
waitFor
2条答案
按热度按时间mrphzbgm1#
act()docs:
在编写UI测试时,渲染、用户事件或数据获取等任务可以被视为与用户界面交互的“单元”。react-dom/test-utils提供了一个名为act()的帮助器,它确保在进行任何Assert之前,与这些“单元”相关的所有更新都已被处理并应用到DOM
不要担心,你会知道什么时候使用它。当你测试你的组件时,你会得到一个像这样的“not wrapped in act(...)”警告
这是一篇很好的文章,解释了什么时候需要使用它。手动调用act(...)的用例
avkwfej42#
当你执行一个动作,导致被测试的组件/钩子的状态更新时,你应该把它 Package 在动作中。
大多数情况下,你可以通过在Assert上使用
waitFor
来解决这个问题。这是因为使用act
Package 与否显然没有任何区别。推荐的方法是将它 Package 在
act
中,并且不必要地使用waitFor。这将使您的测试更快,并且可以避免使测试代码异步。