何时在带有react-dom的玩笑单元测试中使用act()

问题描述 投票:0回答:1

根据反应单元测试文档:

act()

要为断言准备组件,请包装代码渲染并在act()调用中执行更新。这使您的测试更接近React在浏览器中的工作方式。

但是在两种情况下测试都运行良好:

没有act()

it('Should return some text', () => {
  render(<TestComponent />, container);
  expect(container.textContent).toBe('some text');
});

With act()

it('Should return some text', () => {
  act(() => {
    render(<TestComponent />, container);
  });

  expect(container.textContent).toBe('some text');
})

问题是:act()到底是做什么的,何时应该使用它?

reactjs unit-testing jestjs react-dom
1个回答
0
投票

来自act()文档:

[编写UI测试时,诸如渲染,用户事件或数据获取之类的任务可以被视为与用户界面交互的“单元”。 React提供了一个名为act()的帮助程序,可确保在进行任何断言之前,已处理所有与这些“单元”相关的更新并将其应用于DOM

进一步阅读和示例:https://github.com/mrdulin/react-act-examples/blob/master/sync.md

© www.soinside.com 2019 - 2024. All rights reserved.