Skip to content

Commit 835615a

Browse files
committed
Add test for mocked render functions
Treat them as if they return null
1 parent e9615b7 commit 835615a

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

scripts/fiber/tests-passing.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,7 @@ src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js
549549
* should not crash encountering low-priority tree
550550
* throws if non-element passed to top-level render
551551
* throws if something other than false, null, or an element is returned from render
552+
* treats mocked render functions as if they return null
552553

553554
src/renderers/dom/shared/__tests__/CSSProperty-test.js
554555
* should generate browser prefixes for its `isUnitlessNumber`

src/renderers/dom/fiber/__tests__/ReactDOMFiber-test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1048,4 +1048,11 @@ describe('disableNewFiberFeatures', () => {
10481048
expect(() => ReactDOM.render(<Render>{999}</Render>, container)).toThrow(/You may have returned undefined/);
10491049
expect(() => ReactDOM.render(<Render>[<div />]</Render>, container)).toThrow(/You may have returned undefined/);
10501050
});
1051+
1052+
it('treats mocked render functions as if they return null', () => {
1053+
class Mocked extends React.Component {}
1054+
Mocked.prototype.render = jest.fn();
1055+
ReactDOM.render(<Mocked />, container);
1056+
expect(container.textContent).toEqual('');
1057+
});
10511058
});

src/renderers/shared/fiber/ReactChildFiber.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1130,7 +1130,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
11301130
case ClassComponent: {
11311131
if (__DEV__) {
11321132
const instance = returnFiber.stateNode;
1133-
if (instance.render._isMockFunction) {
1133+
if (instance.render._isMockFunction && typeof newChild === 'undefined') {
11341134
// We allow auto-mocks to proceed as if they're
11351135
// returning null.
11361136
break;
@@ -1254,7 +1254,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
12541254
case ClassComponent: {
12551255
if (__DEV__) {
12561256
const instance = returnFiber.stateNode;
1257-
if (instance.render._isMockFunction) {
1257+
if (instance.render._isMockFunction && typeof newChild === 'undefined') {
12581258
// We allow auto-mocks to proceed as if they're returning null.
12591259
break;
12601260
}

0 commit comments

Comments
 (0)