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 1
1
import * as React from 'react'
2
2
import { act , render , fireEvent , screen } from '../'
3
3
4
+ beforeEach ( ( ) => {
5
+ global . IS_REACT_ACT_ENVIRONMENT = true
6
+ } )
7
+
4
8
test ( 'render calls useEffect immediately' , ( ) => {
5
9
const effectCb = jest . fn ( )
6
10
function MyUselessComponent ( ) {
@@ -67,3 +71,27 @@ test('cleans up IS_REACT_ACT_ENVIRONMENT if its async callback throws', async ()
67
71
68
72
expect ( global . IS_REACT_ACT_ENVIRONMENT ) . toEqual ( false )
69
73
} )
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