Merge pull request #3183 from yungsters/master

Support rendering to null in ShallowComponentRenderer
This commit is contained in:
Sebastian Markbåge
2015-02-18 11:43:07 -08:00
2 changed files with 25 additions and 3 deletions
+10 -3
View File
@@ -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() {
+15
View File
@@ -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(<SomeComponent />, {});
var result = shallowRenderer.getRenderOutput();
expect(result).toBe(null);
});
it('lets you update shallowly rendered components', function() {
var SomeComponent = React.createClass({
getInitialState: function() {