根据反应单元测试文档:
act()
要为断言准备组件,请包装代码渲染并在act()调用中执行更新。这使您的测试更接近React在浏览器中的工作方式。
但是在两种情况下测试都运行良好:
it('Should return some text', () => {
render(<TestComponent />, container);
expect(container.textContent).toBe('some text');
});
it('Should return some text', () => {
act(() => {
render(<TestComponent />, container);
});
expect(container.textContent).toBe('some text');
})
问题是:act()到底是做什么的,何时应该使用它?
来自act()文档:
[编写UI测试时,诸如渲染,用户事件或数据获取之类的任务可以被视为与用户界面交互的“单元”。 React提供了一个名为act()的帮助程序,可确保在进行任何断言之前,已处理所有与这些“单元”相关的更新并将其应用于DOM
进一步阅读和示例:https://github.com/mrdulin/react-act-examples/blob/master/sync.md