diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 4c5695b8e2..b3c8a9940c 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -16,6 +16,7 @@ var EventPluginHub = require('EventPluginHub'); var EventPropagators = require('EventPropagators'); var React = require('React'); var ReactElement = require('ReactElement'); +var ReactEmptyComponent = require('ReactEmptyComponent'); var ReactBrowserEventEmitter = require('ReactBrowserEventEmitter'); var ReactCompositeComponent = require('ReactCompositeComponent'); var ReactInstanceHandles = require('ReactInstanceHandles'); @@ -323,13 +324,16 @@ var ReactShallowRenderer = function() { ReactShallowRenderer.prototype.getRenderOutput = function() { return ( (this._instance && this._instance._renderedComponent && - this._instance._renderedComponent._currentElement) + this._instance._renderedComponent._renderedOutput) || null ); }; var NoopInternalComponent = function(element) { - this._currentElement = element; + this._renderedOutput = element; + this._currentElement = element === null || element === false ? + ReactEmptyComponent.emptyElement : + element; } NoopInternalComponent.prototype = { @@ -338,7 +342,10 @@ NoopInternalComponent.prototype = { }, receiveComponent: function(element) { - this._currentElement = element; + this._renderedOutput = element; + this._currentElement = element === null || element === false ? + ReactEmptyComponent.emptyElement : + element; }, unmountComponent: function() { diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index c29968202e..7c091bc994 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -57,6 +57,21 @@ describe('ReactTestUtils', function() { ]); }); + it('can shallow render to null', function() { + var SomeComponent = React.createClass({ + render: function() { + return null; + } + }); + + var shallowRenderer = ReactTestUtils.createRenderer(); + shallowRenderer.render(, {}); + + var result = shallowRenderer.getRenderOutput(); + + expect(result).toBe(null); + }); + it('lets you update shallowly rendered components', function() { var SomeComponent = React.createClass({ getInitialState: function() {