From 22c9562cd99cfe2a99487cc4e1bc419115a0da14 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Tue, 17 Nov 2015 23:53:00 -0800 Subject: [PATCH] Merge pull request #5330 from laskos/fix-shallow-rendering-function-refs Fix shallow renderer with ref as function (cherry picked from commit 1a6d1e74e0491eda75f9ea03622c53cfcf7c218e) --- src/test/ReactTestUtils.js | 3 +++ src/test/__tests__/ReactTestUtils-test.js | 25 +++++++++++++++++++++++ 2 files changed, 28 insertions(+) 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: {