reactjs - 等待多个元素被删除React测试库

标签 reactjs jestjs react-testing-library

我有一个 React 应用程序,我在其中使用 jest 和 React 测试库进行单元测试。我有一个单元测试,我想测试 SomeComponent 在加载时不会呈现任何骨架。 SomeComponent 在数据尚未加载时渲染骨架。问题是渲染了多个骨架,而 waitForElementToBeRemoved 仅需要一个 HTMLElement。

所以我想知道是否有办法waitForMultipleElementsToBeRemoved

test("SomeComponent when loaded doesn't render any skeleton", async () => {
    render(
      <SomeComponent />,
    )

  const skeletons = screen.getAllByTestId("skeleton");
  await waitForElementToBeRemoved(skeletons);

  expect(
    screen.queryByTestId("skeleton") 
  ).not.toBeInTheDocument();
});

注意:

当只有一个骨架时,此测试按预期进行。

最佳答案

您可以:

await waitForElementToBeRemoved(() => screen.getAllByTestId("initLoader"));

或者根据您的情况:

await waitForElementToBeRemoved(() => skeletons);

我认为您只是错过了回调。否则你的代码就没有问题!

关于reactjs - 等待多个元素被删除React测试库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69272560/

相关文章:

javascript - 如何测试 ErrorBoundary 的后备组件?

reactjs - 如何使用 Mobx 商店和 Jest 测试组件

javascript - 如何切换 React 组件的 bool 状态?

javascript - Jest/Enzyme - TypeError : div. 查找不是函数

node.js - 在 Jenkins 中运行时,NPM 测试神秘地卡住了

reactjs - 开 Jest 测试: custom currency/decimal formatters showed wrong delimiters

reactjs - @testing-library/react-hooks 调用 setTimeout 两次

javascript - 在 React Component 中嵌入动画 SVG

javascript - new Date() 在heroku 服务器上返回晚上 8 点的时间,即使我输入时间 11 :59 PM. 如何使其准确?

javascript - 在react-native-datepicker中当前日期值为空