在过去的几个月里,我的测试一直运行得很好。我的包版本是固定的,而不是范围,并且我们没有更新任何依赖项。然而,从三天前开始,测试就根本不会运行了。Jest永远挂在[RUNS] myTests/file.spec.tsx
上(我等了10多分钟)。
我将超时设置为10000ms(10s),但即使达到该超时也不会导致测试失败。它甚至在开始执行测试之前就被卡住了。
此已在CI管道中检测到,在删除node_modules
并在本地重新安装后,它也会在我的本地环境中发生。
经过一些故障排除,我已经能够在新创建的测试文件中重现它,并且当我添加一个期望访问DOM属性时,总是会发生这种情况,例如toHaveStyle
:
const placeholder = screen.getByTestId('floating-placeholder');
expect(placeholder).toBeInTheDocument(); // This works
expect(placeholder).toHaveStyle({ top: '13px' }); // As soon as I write this line, the tests hangs forever
我尝试过的
我不知道该怎么办,因为我唯一能想到的就是库版本,但我们在过去几个月里没有更新任何依赖项。此外,我已经更新了RTL(jest-dom、user-event等)和jest的版本来测试,但它没有起作用。
在Jest脚本中使用--verbose
标志表明进程永远停留在这一行:
npm timing npm:load Completed in 42ms
("42ms"数字一直变化得很快,就像一个计时器,但它永远不会超过那里)。
我还查找了jest-dom
等库的更改,以防其他具有对等依赖关系的库更新它,但也没有更新。
系统版本
- NPM:7.21.0
- 节点:16.8.0
- @测试库/jest dom:5.16.4
- @测试库/反应:13.1.1
- @测试库/用户事件:13.5.0
- 反应:18.0.0
- 获取模拟笑话:1.5.1
- 打字稿:4.6.3
- @类型/笑话:29.4.0
应用程序是使用create-react-script
util创建的。
问题
我该怎么做才能发现它为什么突然失败
谢谢!
我不知道为什么它突然停止工作。我也不知道为什么,这似乎可以解决它。但是将@testing-library/jest-dom
的版本从5.16.4
降级到5.16.3
并进行干净的安装似乎可以解决问题,现在所有测试都以绿色运行,甚至在CI管道中也是如此。
这两个版本的变更日志中唯一的区别是这个单一的修复:
支持未封闭的内部文本,使中的详细信息元素可见(#396)(af18453)
这应该不会影响测试在我的项目中使用此版本的表现。但似乎,不知怎么的,确实如此。