main
js 65 lines 1.54 KB
Raw
1 /**
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * This source code is licensed under the MIT license found in the
5 * LICENSE file in the root directory of this source tree.
6 *
7 * @emails react-core
8 */
9
10 'use strict';
11
12 let React;
13 let ReactDOM;
14 let ReactDOMClient;
15 let assertConsoleErrorDev;
16
17 describe('ReactCreateRef', () => {
18 beforeEach(() => {
19 jest.resetModules();
20
21 React = require('react');
22 ReactDOM = require('react-dom');
23 ReactDOMClient = require('react-dom/client');
24 ({assertConsoleErrorDev} = require('internal-test-utils'));
25 });
26
27 it('should warn in dev if an invalid ref object is provided', () => {
28 function Wrapper({children}) {
29 return children;
30 }
31
32 class ExampleComponent extends React.Component {
33 render() {
34 return null;
35 }
36 }
37
38 const root = ReactDOMClient.createRoot(document.createElement('div'));
39 ReactDOM.flushSync(() => {
40 root.render(
41 <Wrapper>
42 <div ref={{}} />
43 </Wrapper>,
44 );
45 });
46 assertConsoleErrorDev([
47 'Unexpected ref object provided for div. ' +
48 'Use either a ref-setter function or React.createRef().\n' +
49 ' in div (at **)',
50 ]);
51
52 ReactDOM.flushSync(() => {
53 root.render(
54 <Wrapper>
55 <ExampleComponent ref={{}} />
56 </Wrapper>,
57 );
58 });
59 assertConsoleErrorDev([
60 'Unexpected ref object provided for ExampleComponent. ' +
61 'Use either a ref-setter function or React.createRef().\n' +
62 ' in ExampleComponent (at **)',
63 ]);
64 });
65 });