我最近将 Jest 包从 v24 更新到了最新版本,并在运行单元测试时,我在测试套件运行结束时得到了以下信息:
A worker process has failed to exit gracefully and has been force exited.
This is likely caused by tests leaking due to improper teardown.
Try running with --runInBand --detectOpenHandles to find leaks.
Run Code Online (Sandbox Code Playgroud)
我添加了--detectOpenHandles测试命令,并且消息将在下次运行中出现。我不确定如何看待它,因为 detectorOpenHandles 的目的是查找打开的句柄而不是修复它,所以下次运行时该消息如何不会出现,并且没有其他消息来指导我可能出现的问题。
有人遇到过类似的行为吗?补充一下,我现在使用的是最新版本的 Jest ie 27.2.0。
小智 6
根据我的研究,错误发生在以下情况:
该错误没有提到这样一个事实:即使有标志,测试在大多数情况下也会挂起--detectOpenHandles,这可能就是您看不到任何有用的调试消息的原因。
从文档中:
尝试收集并打印打开的句柄,以防止 Jest 干净退出。
--forceExit如果您需要使用Jest 退出以找出可能的原因,请使用此选项。这意味着 --runInBand,使测试串行运行。使用 async_hooks 实现,因此它仅适用于 Node 8 及更高版本。此选项会显着降低性能,只能用于调试。
--detectOpenHandles正如文档中所述,您可以尝试使用和标志运行测试--forceExit。这意味着测试将串行运行,并且当测试由于不正确的拆卸而未完成时,每个测试将强制退出。让我知道这个是否奏效。
| 归档时间: |
|
| 查看次数: |
7629 次 |
| 最近记录: |