diff --git a/src/test/ReactTestUtils.js b/src/test/ReactTestUtils.js index 1218dc0b1a..cb41c5a22a 100644 --- a/src/test/ReactTestUtils.js +++ b/src/test/ReactTestUtils.js @@ -384,6 +384,9 @@ NoopInternalComponent.prototype = { unmountComponent: function() { }, + getPublicInstance: function() { + return null; + }, }; var ShallowComponentWrapper = function() { }; diff --git a/src/test/__tests__/ReactTestUtils-test.js b/src/test/__tests__/ReactTestUtils-test.js index 0b438cd7cb..e531cdd878 100644 --- a/src/test/__tests__/ReactTestUtils-test.js +++ b/src/test/__tests__/ReactTestUtils-test.js @@ -176,6 +176,31 @@ describe('ReactTestUtils', function() { expect(result).toEqual(
); }); + it('can shallowly render components with ref as function', function() { + var SimpleComponent = React.createClass({ + getInitialState: function() { + return {clicked: false}; + }, + handleUserClick: function() { + this.setState({ clicked: true }); + }, + render: function() { + return
{}} onClick={this.handleUserClick} className={this.state.clicked ? 'clicked' : ''}>
; + }, + }); + + var shallowRenderer = ReactTestUtils.createRenderer(); + shallowRenderer.render(); + var result = shallowRenderer.getRenderOutput(); + expect(result.type).toEqual('div'); + expect(result.props.className).toEqual(''); + result.props.onClick(); + + result = shallowRenderer.getRenderOutput(); + expect(result.type).toEqual('div'); + expect(result.props.className).toEqual('clicked'); + }); + it('can pass context when shallowly rendering', function() { var SimpleComponent = React.createClass({ contextTypes: {