diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 64b39fe5e3403..40af0e51300de 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -375,10 +375,32 @@ ReactShallowRenderer.prototype.getMountedInstance = function() { }; var NoopInternalComponent = function(element) { - this._renderedOutput = element; + if (element && element.props && element.props.children) { + var children = NoopInternalChildren(element.props.children); + var props = assign({}, element.props, { children: children }); + this._renderedOutput = assign({}, element, { props: props }); + } else { + this._renderedOutput = element; + } this._currentElement = element; }; +var NoopInternalChildren = function(children) { + if (Array.isArray(children)) { + return children.map(NoopInternalChildren); + } else if (children === Object(children)) { + return NoopInternalChild(children); + } + return children; +}; + +var NoopInternalChild = function(child) { + var props = child.props && child.props.children ? assign({}, child.props, { + children: NoopInternalChildren(child.props.children), + }) : child.props; + return assign({}, child, { _owner: null }, { props: props }); +}; + NoopInternalComponent.prototype = { mountComponent: function() { diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index 9bbbdb56088d5..5f39c0d3c9be1 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -209,6 +209,44 @@ describe('ReactTestUtils', function() { expect(result).toEqual(