@@ -13,13 +13,15 @@ jest.mock('react-dom-bindings/src/events/isEventSupported');
1313
1414describe ( 'InvalidEventListeners' , ( ) => {
1515 let React ;
16- let ReactDOM ;
16+ let ReactDOMClient ;
17+ let act ;
1718 let container ;
1819
1920 beforeEach ( ( ) => {
2021 jest . resetModules ( ) ;
2122 React = require ( 'react' ) ;
22- ReactDOM = require ( 'react-dom' ) ;
23+ ReactDOMClient = require ( 'react-dom/client' ) ;
24+ act = require ( 'internal-test-utils' ) . act ;
2325
2426 container = document . createElement ( 'div' ) ;
2527 document . body . appendChild ( container ) ;
@@ -30,13 +32,16 @@ describe('InvalidEventListeners', () => {
3032 container = null ;
3133 } ) ;
3234
33- it ( 'should prevent non-function listeners, at dispatch' , ( ) => {
34- let node ;
35- expect ( ( ) => {
36- node = ReactDOM . render ( < div onClick = "not a function" /> , container ) ;
35+ it ( 'should prevent non-function listeners, at dispatch' , async ( ) => {
36+ const root = ReactDOMClient . createRoot ( container ) ;
37+ await expect ( async ( ) => {
38+ await act ( ( ) => {
39+ root . render ( < div onClick = "not a function" /> ) ;
40+ } ) ;
3741 } ) . toErrorDev (
3842 'Expected `onClick` listener to be a function, instead got a value of `string` type.' ,
3943 ) ;
44+ const node = container . firstChild ;
4045
4146 spyOnProd ( console , 'error' ) ;
4247
@@ -46,11 +51,13 @@ describe('InvalidEventListeners', () => {
4651 }
4752 window . addEventListener ( 'error' , handleWindowError ) ;
4853 try {
49- node . dispatchEvent (
50- new MouseEvent ( 'click' , {
51- bubbles : true ,
52- } ) ,
53- ) ;
54+ await act ( ( ) => {
55+ node . dispatchEvent (
56+ new MouseEvent ( 'click' , {
57+ bubbles : true ,
58+ } ) ,
59+ ) ;
60+ } ) ;
5461 } finally {
5562 window . removeEventListener ( 'error' , handleWindowError ) ;
5663 }
@@ -77,12 +84,19 @@ describe('InvalidEventListeners', () => {
7784 }
7885 } ) ;
7986
80- it ( 'should not prevent null listeners, at dispatch' , ( ) => {
81- const node = ReactDOM . render ( < div onClick = { null } /> , container ) ;
82- node . dispatchEvent (
83- new MouseEvent ( 'click' , {
84- bubbles : true ,
85- } ) ,
86- ) ;
87+ it ( 'should not prevent null listeners, at dispatch' , async ( ) => {
88+ const root = ReactDOMClient . createRoot ( container ) ;
89+ await act ( ( ) => {
90+ root . render ( < div onClick = { null } /> ) ;
91+ } ) ;
92+
93+ const node = container . firstChild ;
94+ await act ( ( ) => {
95+ node . dispatchEvent (
96+ new MouseEvent ( 'click' , {
97+ bubbles : true ,
98+ } ) ,
99+ ) ;
100+ } ) ;
87101 } ) ;
88102} ) ;
0 commit comments