Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.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 测试中的更新未包装在act中_Reactjs_Jestjs_React Testing Library - Fatal编程技术网

Reactjs 测试中的更新未包装在act中

Reactjs 测试中的更新未包装在act中,reactjs,jestjs,react-testing-library,Reactjs,Jestjs,React Testing Library,我正在把我能做的一切都打包成act,但是这个错误会一直出现,直到测试结束 it('select a chain and type a name', (done): * => { let result; act(() => { result = render( <AddNewChainDialog title="Add new chain dialog" projectId="fjhkldgs"

我正在把我能做的一切都打包成act,但是这个错误会一直出现,直到测试结束

it('select a chain and type a name', (done): * => {
    let result;
    act(() => {
      result = render(
        <AddNewChainDialog
          title="Add new chain dialog"
          projectId="fjhkldgs"
          closeCallback={ret => {
            console.log(ret);
            done();
          }}
        />
      );
    });
    jest.advanceTimersByTime(1000);
    // expect(result == null).toBe(false);
    act(() => {
      fireEvent.change(
        result.getByLabelText('chainNameInput', {
          target: { value: 'test chain' }
        })
      );
    });
    act(() => {
      fireEvent.change(
        result.getByLabelText('masterTemplateChoice', {
          target: { value: 'ID1' }
        })
      );
    });

    act(() => {
      // fireEvent.click(result.getByText('Add Template'));
    });
});
it('选择链并键入名称',(完成):*=>{
让结果;
行动(()=>{
结果=渲染(
{
控制台日志(ret);
完成();
}}
/>
);
});
笑话:提前计时(1000);
//expect(result==null).toBe(false);
行动(()=>{
firevent.change(
结果.getByLabelText('chainNameInput'{
目标:{值:'测试链'}
})
);
});
行动(()=>{
firevent.change(
结果.getByLabelText('masterTemplateChoice'{
目标:{value:'ID1'}
})
);
});
行动(()=>{
//单击(result.getByText('addtemplate');
});
});

我的组件在挂载时正在进行更新,所以我认为它是从中产生的,但我不知道如何使用它来管理act

Does
jest.AdvanceTimesByTime(1000)导致组件更新?这似乎是最有可能的候选人。而且,它是唯一没有包装在
act()
中的东西。另外,我不知道如果它不进行组件更新,为什么会有这一行。你是否在用Promise.resolve模拟任何API调用?试着改用定时器