Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 何时在jest单元测试中使用act()和react dom_Reactjs_Unit Testing_Jestjs_React Dom - Fatal编程技术网

Reactjs 何时在jest单元测试中使用act()和react dom

Reactjs 何时在jest单元测试中使用act()和react dom,reactjs,unit-testing,jestjs,react-dom,Reactjs,Unit Testing,Jestjs,React Dom,根据react单元测试文件: act() 要为断言准备组件,请包装代码 它可以在act()调用中执行更新。这使你的测试更容易 运行更接近于React在浏览器中的工作方式 但在这两种情况下,测试都运行良好: 无行为 it('应该返回一些文本',()=>{ 渲染(,容器); expect(container.textContent).toBe('sometext'); }); 与act()一起 it('应该返回一些文本',()=>{ 行动(()=>{ 渲染(,容器); }); expect(con

根据react单元测试文件:

act()

要为断言准备组件,请包装代码 它可以在act()调用中执行更新。这使你的测试更容易 运行更接近于React在浏览器中的工作方式

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

无行为
it('应该返回一些文本',()=>{
渲染(,容器);
expect(container.textContent).toBe('sometext');
});
与act()一起
it('应该返回一些文本',()=>{
行动(()=>{
渲染(,容器);
});
expect(container.textContent).toBe('sometext');
})
问题是:act()到底做什么,什么时候应该使用它?来自文档:

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

进一步阅读和举例:

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');
})