React Jest测试中App组件更新未包裹act()警告,求解决方案
React Jest测试中act警告的消除求助
运行React的Jest测试时,测试虽能成功通过,但会返回如下警告:
console.error Warning: An update to App inside a test was not wrapped in act(...). When testing, code that causes React state updates should be wrapped into act(...): act(() => { /* fire events that update state */ }); /* assert on the output */
警告指向的代码片段:
const handleFirstNumberChange = (e: React.ChangeEvent<HTMLInputElement>) => { setFirstNumber( ^ e.target.value !== '' ? Number(e.target.value.replace(/\D*/g, '')) : null ); };
我的环境配置:
- node: 16.14.2
- npm: 8.5.5
- jest: 29.3.1
- react-test-renderer: 18.2.0
- react: 18.2.0
- react-dom: 18.2.0
- react-scripts: 5.0.1
- @testing-library/jest-dom: 5.16.5
- @testing-library/react: 13.4.0
- @testing-library/user-event: 14.4.3
测试代码:
import React from 'react'; import { act } from 'react-dom/test-utils'; import { render, screen, RenderResult, waitFor} from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import App from '../pathToDirectory/App'; describe('My tests', () => { it('Should display xx', async () => { render(<App />); await userEvent.type(screen.getByLabelText('Number A'), '123'); await userEvent.type(screen.getByLabelText('Number B'), '321'); await userEvent.click(screen.getByRole('button')); await waitFor(() => { expect(screen.getByText('xx')).toBeInTheDocument(); }); }); });
目前我已查阅过React官方act文档、多篇社区技术文章及Stack Overflow相关问答,但所有方案均未解决问题,恳请各位提供消除该警告的有效建议。
内容的提问来源于stack exchange,提问作者Jorge Mauricio
相关产品推荐
相关产品推荐

