为什么我在 React 中的异步测试不起作用?

Why did my asynchronous test in react not work?

我正在用 jest 和 react 测试库(最新版本)测试一个 react 组件,但我没有让异步测试工作。我认为这是一个语法问题。组件正确渲染,并且由于超时有效,提取 (useEffect) 似乎也有效。

test('renders asynchron', async () => {
   renderComp(); //renders component
   
   await waitFor(() => expect(screen.findByTestId('testid')).toBeInTheDocument()); //dont work
   await screen.findByTestId('testid'); //same

   setTimeout(() => {
      expect(screen.findByTestId('testid')).toBeInTheDocument(); //this works
   }, 100);

});

如果我希望在单击按钮后出现元素,我也会遇到同样的问题。

因为以下箭头函数不可等待:

() => expect(screen.findByTestId('testid')).toBeInTheDocument()

您必须定义内部函数 async 并等待。