Javascript 使用材质UI工具提示测试组件时发出警告

Javascript 使用材质UI工具提示测试组件时发出警告,javascript,reactjs,jestjs,material-ui,react-testing-library,Javascript,Reactjs,Jestjs,Material Ui,React Testing Library,这是一个后续行动 我有一个组件Registration,它有一个按钮,默认情况下是禁用的(通过单击复选框接受条款和条件来控制),如果悬停在上面,会显示一条工具提示消息以接受条款和条件。下面是测试结果和测试本身 √ 未经同意,不得继续(190ms) console.error节点_modules/react-dom/cjs/react-dom.development.js:506 警告:测试中对ForwardRef(Popper)的更新未包装在act(…)中。 测试时,应将导致React状态更新的

这是一个后续行动

我有一个组件
Registration
,它有一个按钮,默认情况下是禁用的(通过单击复选框接受条款和条件来控制),如果悬停在上面,会显示一条工具提示消息以接受条款和条件。下面是测试结果和测试本身

√ 未经同意,不得继续(190ms)
console.error节点_modules/react-dom/cjs/react-dom.development.js:506
警告:测试中对ForwardRef(Popper)的更新未包装在act(…)中。
测试时,应将导致React状态更新的代码包装到act(…):
行动(()=>{
/*触发更新状态的事件*/
});
/*在输出上断言*/
这确保您正在测试用户在浏览器中看到的行为。了解更多有关。。。
在ForwardRef(Popper)中(由工具提示创建)
在工具提示中(使用样式创建(工具提示))
....
我的测试(使用
@测试库/react
):


开玩笑
它('未经同意,不得进一步',()=>{
const{getByText}=render()
const loginButton=getByText(/Log-in/)
行动(()=>{
fireEvent.mouseEnter(登录按钮)
jest.runAllTimers()
})
expect(getByText(/请接受我们的条款和条件/)。toBeInTheDocument()
})

我根据GitHub问题的建议添加了假计时器,但没有帮助。

不要担心act警告。它将在React的下一个版本中得到修复。有关更多信息,请参阅。

我刚刚将我的项目从react“16.8.6”更新为“16.9.0”,但控制台上仍然存在相同的错误

更新: 为了修复一些错误,我必须添加
act(()=>{functionthattupdatestate();})

对于其他错误,如使用材质Ui工具提示时,我必须执行以下操作:

beforeach(()=>{
开玩笑。使用faketimers();
})
它(“应该做点什么”,()=>{
行动(()=>{
const{getByText}=render();
jest.runAllTimers();
期望(getByText(“嘿”)).toBeDefined();
})
});

确认,我刚检查过,它消失了,在react@16.9.0-alpha.0甚至不需要计时器!