首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用setState的组件上使用testing-library findBy*会导致"not wrapped in act“警告

在使用setState的组件上使用testing-library findBy*会导致"not wrapped in act“警告
EN

Stack Overflow用户
提问于 2019-12-13 00:30:56
回答 1查看 1.7K关注 0票数 2

我有一个React组件,它使用Promise检索数据,然后在promise解析时调用setState。然后,它使用更新后的状态来更改呈现的内容。

在测试时,我使用testing libraryfindBy* methods等待呈现的组件使用Promise中的内容进行更新:

代码语言:javascript
复制
await findByText("Failure details", { exact: false });

我的测试通过了-它们正确地等待,直到组件重新呈现。但是,在运行它们时,我会收到类似这样的警告(我使用的是Jest,但我不认为这是相关的):

代码语言:javascript
复制
Warning: An update to MyComponent inside a test was not wrapped in act(...).

Everything I've found online that's related to this要么是关于使用useEffect的组件,要么是关于在其中包含对act的显式调用的测试(我的测试没有这个必要)-我的测试本身并没有改变组件,除了它调用了render这一事实。

简而言之,我的情况看起来比其他人写的要简单-我只是使用setStatefindBy*查询,没有更复杂的东西。

对于这个问题,有没有同样简单的解决方案?

EN

回答 1

Stack Overflow用户

发布于 2019-12-13 00:30:56

谢天谢地,解决方案很简单--将React和React-DOM升级到>= 16.9.0。我不需要更改我的测试或组件。

16.9.0包括an asynchronous version of act。正如我所说的,我不需要显式地使用它,但它显然是在幕后使用的,因为它解决了我的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59308987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档