diff --git a/src/renderers/testing/ReactTestRenderer.js b/src/renderers/testing/ReactTestRenderer.js index 47184fea0c1..635791008aa 100644 --- a/src/renderers/testing/ReactTestRenderer.js +++ b/src/renderers/testing/ReactTestRenderer.js @@ -53,11 +53,13 @@ class ReactTestComponent { _currentElement: ReactElement; _renderedChildren: null | Object; _topLevelWrapper: null | ReactInstance; + _hostNode: null | Object; constructor(element: ReactElement) { this._currentElement = element; this._renderedChildren = null; this._topLevelWrapper = null; + this._hostNode = null; } mountComponent( @@ -66,7 +68,10 @@ class ReactTestComponent { nativeContainerInfo: ?null, context: Object, ) { + var options = transaction.getTestOptions(); var element = this._currentElement; + this._hostNode = options.createNodeMock(element); + // $FlowFixMe https://github.com/facebook/flow/issues/1805 this.mountChildren(element.props.children, transaction, context); } @@ -76,7 +81,9 @@ class ReactTestComponent { transaction: ReactTestReconcileTransaction, context: Object, ) { + var options = transaction.getTestOptions(); this._currentElement = nextElement; + this._hostNode = options.createNodeMock(nextElement); // $FlowFixMe https://github.com/facebook/flow/issues/1805 this.updateChildren(nextElement.props.children, transaction, context); } diff --git a/src/renderers/testing/__tests__/ReactTestRenderer-test.js b/src/renderers/testing/__tests__/ReactTestRenderer-test.js index 7ca6c201396..b5935b782c9 100644 --- a/src/renderers/testing/__tests__/ReactTestRenderer-test.js +++ b/src/renderers/testing/__tests__/ReactTestRenderer-test.js @@ -12,6 +12,7 @@ 'use strict'; var React = require('React'); +var findDOMNode = require('findDOMNode'); var ReactTestRenderer = require('ReactTestRenderer'); describe('ReactTestRenderer', () => { @@ -364,4 +365,46 @@ describe('ReactTestRenderer', () => { ]); }); + it('works with findDOMNode', () => { + let nodes = []; + function createNodeMock(element) { + return element.type; + } + + class GrandChild extends React.Component { + render() { + return