React+Jest:每当我试图访问DOM属性(即:toHaveStyle)时,测试将永远挂起



在过去的几个月里,我的测试一直运行得很好。我的包版本是固定的,而不是范围,并且我们没有更新任何依赖项。然而,从三天前开始,测试就根本不会运行了。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-scriptutil创建的。

问题

我该怎么做才能发现它为什么突然失败

谢谢!

我不知道为什么它突然停止工作。我也不知道为什么,这似乎可以解决它。但是@testing-library/jest-dom的版本从5.16.4降级到5.16.3并进行干净的安装似乎可以解决问题,现在所有测试都以绿色运行,甚至在CI管道中也是如此。

这两个版本的变更日志中唯一的区别是这个单一的修复:

支持未封闭的内部文本,使中的详细信息元素可见(#396)(af18453)

这应该不会影响测试在我的项目中使用此版本的表现。但似乎,不知怎么的,确实如此。

相关内容

  • 没有找到相关文章

最新更新