Reactjs 测试中的更新未包装在act中
我正在把我能做的一切都打包成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"
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');
});
});
我的组件在挂载时正在进行更新,所以我认为它是从中产生的,但我不知道如何使用它来管理actDoes
jest.AdvanceTimesByTime(1000)代码>导致组件更新?这似乎是最有可能的候选人。而且,它是唯一没有包装在act()
中的东西。另外,我不知道如果它不进行组件更新,为什么会有这一行。你是否在用Promise.resolve模拟任何API调用?试着改用定时器