Skip to content

Commit 2a5e792

Browse files
rickhanloniiAndyPengc12
authored andcommitted
Clean up console.log tests (facebook#28693)
Followups to facebook#28680 One of these test don't need to use `console.log`. The others are specifically testing `console.log` behavior, so I added a comment.
1 parent 6b4013c commit 2a5e792

File tree

3 files changed

+20
-34
lines changed

3 files changed

+20
-34
lines changed

packages/react-client/src/__tests__/ReactFlight-test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2108,6 +2108,7 @@ describe('ReactFlight', () => {
21082108
throw new Error('err');
21092109
}
21102110

2111+
// These tests are specifically testing console.log.
21112112
// Assign to `mockConsoleLog` so we can still inspect it when `console.log`
21122113
// is overridden by the test modules. The original function will be restored
21132114
// after this test finishes by `jest.restoreAllMocks()`.
@@ -2127,6 +2128,9 @@ describe('ReactFlight', () => {
21272128
transport = ReactNoopFlightServer.render({root: <ServerComponent />});
21282129
}).toErrorDev('err');
21292130

2131+
expect(mockConsoleLog).toHaveBeenCalledTimes(1);
2132+
expect(mockConsoleLog.mock.calls[0][0]).toBe('hi');
2133+
expect(mockConsoleLog.mock.calls[0][1].prop).toBe(123);
21302134
mockConsoleLog.mockClear();
21312135

21322136
// The error should not actually get logged because we're not awaiting the root

packages/react-dom/src/__tests__/ReactDOMComponent-test.js

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,18 @@ describe('ReactDOMComponent', () => {
1717
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
1818

1919
let act;
20+
let assertLog;
21+
let Scheduler;
2022

2123
beforeEach(() => {
2224
jest.resetModules();
2325
React = require('react');
2426
ReactDOM = require('react-dom');
2527
ReactDOMClient = require('react-dom/client');
2628
ReactDOMServer = require('react-dom/server');
29+
Scheduler = require('scheduler');
2730
act = require('internal-test-utils').act;
31+
assertLog = require('internal-test-utils').assertLog;
2832
});
2933

3034
afterEach(() => {
@@ -1611,7 +1615,6 @@ describe('ReactDOMComponent', () => {
16111615
});
16121616

16131617
it('should work error event on <source> element', async () => {
1614-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
16151618
const container = document.createElement('div');
16161619
const root = ReactDOMClient.createRoot(container);
16171620
await act(() => {
@@ -1620,7 +1623,7 @@ describe('ReactDOMComponent', () => {
16201623
<source
16211624
src="http://example.org/video"
16221625
type="video/mp4"
1623-
onError={e => console.log('onError called')}
1626+
onError={e => Scheduler.log('onError called')}
16241627
/>
16251628
</video>,
16261629
);
@@ -1631,8 +1634,7 @@ describe('ReactDOMComponent', () => {
16311634
container.getElementsByTagName('source')[0].dispatchEvent(errorEvent);
16321635

16331636
if (__DEV__) {
1634-
expect(console.log).toHaveBeenCalledTimes(1);
1635-
expect(console.log.mock.calls[0][0]).toContain('onError called');
1637+
assertLog(['onError called']);
16361638
}
16371639
});
16381640

@@ -1921,16 +1923,15 @@ describe('ReactDOMComponent', () => {
19211923
});
19221924

19231925
it('should work load and error events on <image> element in SVG', async () => {
1924-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
19251926
const container = document.createElement('div');
19261927
const root = ReactDOMClient.createRoot(container);
19271928
await act(() => {
19281929
root.render(
19291930
<svg>
19301931
<image
19311932
xlinkHref="http://example.org/image"
1932-
onError={e => console.log('onError called')}
1933-
onLoad={e => console.log('onLoad called')}
1933+
onError={e => Scheduler.log('onError called')}
1934+
onLoad={e => Scheduler.log('onLoad called')}
19341935
/>
19351936
</svg>,
19361937
);
@@ -1946,9 +1947,7 @@ describe('ReactDOMComponent', () => {
19461947
container.getElementsByTagName('image')[0].dispatchEvent(loadEvent);
19471948

19481949
if (__DEV__) {
1949-
expect(console.log).toHaveBeenCalledTimes(2);
1950-
expect(console.log.mock.calls[0][0]).toContain('onError called');
1951-
expect(console.log.mock.calls[1][0]).toContain('onLoad called');
1950+
assertLog(['onError called', 'onLoad called']);
19521951
}
19531952
});
19541953

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

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,12 +1146,17 @@ describe('context legacy', () => {
11461146
React = require('react');
11471147
ReactDOMClient = require('react-dom/client');
11481148
act = require('internal-test-utils').act;
1149+
1150+
// These tests are specifically testing console.log.
1151+
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1152+
});
1153+
1154+
afterEach(() => {
1155+
console.log.mockRestore();
11491156
});
11501157

11511158
if (ReactFeatureFlags.consoleManagedByDevToolsDuringStrictMode) {
11521159
it('does not disable logs for class double render', async () => {
1153-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1154-
11551160
let count = 0;
11561161
class Foo extends React.Component {
11571162
render() {
@@ -1179,8 +1184,6 @@ describe('context legacy', () => {
11791184
});
11801185

11811186
it('does not disable logs for class double ctor', async () => {
1182-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1183-
11841187
let count = 0;
11851188
class Foo extends React.Component {
11861189
constructor(props) {
@@ -1211,8 +1214,6 @@ describe('context legacy', () => {
12111214
});
12121215

12131216
it('does not disable logs for class double getDerivedStateFromProps', async () => {
1214-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1215-
12161217
let count = 0;
12171218
class Foo extends React.Component {
12181219
state = {};
@@ -1244,8 +1245,6 @@ describe('context legacy', () => {
12441245
});
12451246

12461247
it('does not disable logs for class double shouldComponentUpdate', async () => {
1247-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1248-
12491248
let count = 0;
12501249
class Foo extends React.Component {
12511250
state = {};
@@ -1285,8 +1284,6 @@ describe('context legacy', () => {
12851284
});
12861285

12871286
it('does not disable logs for class state updaters', async () => {
1288-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1289-
12901287
let inst;
12911288
let count = 0;
12921289
class Foo extends React.Component {
@@ -1323,8 +1320,6 @@ describe('context legacy', () => {
13231320
});
13241321

13251322
it('does not disable logs for function double render', async () => {
1326-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1327-
13281323
let count = 0;
13291324
function Foo() {
13301325
count++;
@@ -1350,8 +1345,6 @@ describe('context legacy', () => {
13501345
});
13511346
} else {
13521347
it('disable logs for class double render', async () => {
1353-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1354-
13551348
let count = 0;
13561349
class Foo extends React.Component {
13571350
render() {
@@ -1379,8 +1372,6 @@ describe('context legacy', () => {
13791372
});
13801373

13811374
it('disables logs for class double ctor', async () => {
1382-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1383-
13841375
let count = 0;
13851376
class Foo extends React.Component {
13861377
constructor(props) {
@@ -1411,8 +1402,6 @@ describe('context legacy', () => {
14111402
});
14121403

14131404
it('disable logs for class double getDerivedStateFromProps', async () => {
1414-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1415-
14161405
let count = 0;
14171406
class Foo extends React.Component {
14181407
state = {};
@@ -1444,8 +1433,6 @@ describe('context legacy', () => {
14441433
});
14451434

14461435
it('disable logs for class double shouldComponentUpdate', async () => {
1447-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1448-
14491436
let count = 0;
14501437
class Foo extends React.Component {
14511438
state = {};
@@ -1484,8 +1471,6 @@ describe('context legacy', () => {
14841471
});
14851472

14861473
it('disable logs for class state updaters', async () => {
1487-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1488-
14891474
let inst;
14901475
let count = 0;
14911476
class Foo extends React.Component {
@@ -1522,8 +1507,6 @@ describe('context legacy', () => {
15221507
});
15231508

15241509
it('disable logs for function double render', async () => {
1525-
spyOnDevAndProd(console, 'log').mockImplementation(() => {});
1526-
15271510
let count = 0;
15281511
function Foo() {
15291512
count++;

0 commit comments

Comments
 (0)