Skip to content

Commit c6bb12e

Browse files
authored
Remove ReactTestUtils from ReactJSXRuntime (#28337)
1 parent e7849b5 commit c6bb12e

File tree

1 file changed

+43
-17
lines changed

1 file changed

+43
-17
lines changed

packages/react/src/__tests__/ReactJSXRuntime-test.js

Lines changed: 43 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
let React;
1313
let ReactDOM;
1414
let ReactDOMClient;
15-
let ReactTestUtils;
1615
let JSXRuntime;
1716
let JSXDEVRuntime;
1817
let act;
@@ -29,7 +28,6 @@ describe('ReactJSXRuntime', () => {
2928
JSXDEVRuntime = require('react/jsx-dev-runtime');
3029
ReactDOM = require('react-dom');
3130
ReactDOMClient = require('react-dom/client');
32-
ReactTestUtils = require('react-dom/test-utils');
3331
act = require('internal-test-utils').act;
3432
});
3533

@@ -72,26 +70,41 @@ describe('ReactJSXRuntime', () => {
7270
expect(container.firstChild.textContent).toBe('persimmon');
7371
});
7472

75-
it('should normalize props with default values', () => {
73+
it('should normalize props with default values', async () => {
7674
class Component extends React.Component {
7775
render() {
7876
return JSXRuntime.jsx('span', {children: this.props.prop});
7977
}
8078
}
8179
Component.defaultProps = {prop: 'testKey'};
8280

83-
const instance = ReactTestUtils.renderIntoDocument(
84-
JSXRuntime.jsx(Component, {}),
85-
);
81+
let container = document.createElement('div');
82+
let root = ReactDOMClient.createRoot(container);
83+
let instance;
84+
await act(() => {
85+
root.render(
86+
JSXRuntime.jsx(Component, {ref: current => (instance = current)}),
87+
);
88+
});
89+
8690
expect(instance.props.prop).toBe('testKey');
8791

88-
const inst2 = ReactTestUtils.renderIntoDocument(
89-
JSXRuntime.jsx(Component, {prop: null}),
90-
);
92+
container = document.createElement('div');
93+
root = ReactDOMClient.createRoot(container);
94+
let inst2;
95+
await act(() => {
96+
root.render(
97+
JSXRuntime.jsx(Component, {
98+
prop: null,
99+
ref: current => (inst2 = current),
100+
}),
101+
);
102+
});
103+
91104
expect(inst2.props.prop).toBe(null);
92105
});
93106

94-
it('throws when changing a prop (in dev) after element creation', () => {
107+
it('throws when changing a prop (in dev) after element creation', async () => {
95108
class Outer extends React.Component {
96109
render() {
97110
const el = JSXRuntime.jsx('div', {className: 'moo'});
@@ -109,9 +122,13 @@ describe('ReactJSXRuntime', () => {
109122
return el;
110123
}
111124
}
112-
const outer = ReactTestUtils.renderIntoDocument(
113-
JSXRuntime.jsx(Outer, {color: 'orange'}),
114-
);
125+
const container = document.createElement('div');
126+
const root = ReactDOMClient.createRoot(container);
127+
await act(() => {
128+
root.render(JSXRuntime.jsx(Outer, {color: 'orange'}));
129+
});
130+
131+
const outer = container.firstChild;
115132
if (__DEV__) {
116133
expect(ReactDOM.findDOMNode(outer).className).toBe('moo');
117134
} else {
@@ -151,15 +168,24 @@ describe('ReactJSXRuntime', () => {
151168
}
152169
});
153170

154-
it('does not warn for NaN props', () => {
171+
it('does not warn for NaN props', async () => {
155172
class Test extends React.Component {
156173
render() {
157174
return JSXRuntime.jsx('div', {});
158175
}
159176
}
160-
const test = ReactTestUtils.renderIntoDocument(
161-
JSXRuntime.jsx(Test, {value: +undefined}),
162-
);
177+
const container = document.createElement('div');
178+
const root = ReactDOMClient.createRoot(container);
179+
let test;
180+
await act(() => {
181+
root.render(
182+
JSXRuntime.jsx(Test, {
183+
value: +undefined,
184+
ref: current => (test = current),
185+
}),
186+
);
187+
});
188+
163189
expect(test.props.value).toBeNaN();
164190
});
165191

0 commit comments

Comments
 (0)