我有一个 React 组件,它允许用户向远程服务提交可能长时间运行的查询。当查询运行时,组件会显示一个取消按钮。我想测试这个按钮是否在预期的时候出现,它的点击处理程序取消了之前的 API 请求,等等。
由于按钮仅在异步 API 调用处于活动状态时出现,因此我为此目的编写的测试在异步 API 本身的模拟实现中对按钮进行断言。它们不是超级优雅,但我确认当我删除部分生产代码时它们确实会变红。
在将 @testing-library/react 从 8.0.1 升级到 9.3.2 时,虽然测试仍然通过,但我现在多次收到以下警告:
console.error node_modules/@testing-library/react/dist/act-compat.js:52
Warning: You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one.
我在下面的 CodeSandbox 中重现了这个问题(请务必选择右侧的“测试”选项卡,然后查看右下角的“控制台”消息)。
关于这个GitHub 问题的最后评论说,act()
只要我使用 React 测试库帮助程序和函数(我就是这样),我就不必担心。我错过了什么?