File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change 11import * as React from 'react'
22import { act , render , fireEvent , screen } from '../'
33
4+ beforeEach ( ( ) => {
5+ global . IS_REACT_ACT_ENVIRONMENT = true
6+ } )
7+
48test ( 'render calls useEffect immediately' , ( ) => {
59 const effectCb = jest . fn ( )
610 function MyUselessComponent ( ) {
@@ -67,3 +71,27 @@ test('cleans up IS_REACT_ACT_ENVIRONMENT if its async callback throws', async ()
6771
6872 expect ( global . IS_REACT_ACT_ENVIRONMENT ) . toEqual ( false )
6973} )
74+
75+ test ( 'state update from microtask does not trigger "missing act" warning' , async ( ) => {
76+ let triggerStateUpdateFromMicrotask
77+ function App ( ) {
78+ const [ state , setState ] = React . useState ( 0 )
79+ triggerStateUpdateFromMicrotask = ( ) => setState ( 1 )
80+ React . useEffect ( ( ) => {
81+ // eslint-disable-next-line jest/no-conditional-in-test
82+ if ( state === 1 ) {
83+ Promise . resolve ( ) . then ( ( ) => {
84+ setState ( 2 )
85+ } )
86+ }
87+ } , [ state ] )
88+ return state
89+ }
90+ const { container} = await render ( < App /> )
91+
92+ await act ( ( ) => {
93+ triggerStateUpdateFromMicrotask ( )
94+ } )
95+
96+ expect ( container ) . toHaveTextContent ( '2' )
97+ } )
You can’t perform that action at this time.
0 commit comments