Fix shallow renderer with ref as function
Sławomir Laskowski committed
Oct 30, 2015 at 00:23 UTC
f00d45d65f27f2b719c9b48f972f4ae015ada7dd
2 files changed
+28
src/test/ReactTestUtils.js
+3
@@ -396,6 +396,9 @@ NoopInternalComponent.prototype = {
396
unmountComponent: function() {
397
},
398
399
+ getPublicInstance: function() {
400
+ return null;
401
+ },
402
};
403
404
var ShallowComponentWrapper = function() { };
src/test/__tests__/ReactTestUtils-test.js
+25
@@ -191,6 +191,31 @@ describe('ReactTestUtils', function() {
191
expect(result).toEqual(<div />);
192
});
193
194
+ it('can shallowly render components with ref as function', function() {
195
+ var SimpleComponent = React.createClass({
196
+ getInitialState: function() {
197
+ return {clicked: false};
198
+ },
199
+ handleUserClick: function() {
200
+ this.setState({ clicked: true });
201
+ },
202
+ render: function() {
203
+ return <div ref={() => {}} onClick={this.handleUserClick} className={this.state.clicked ? 'clicked' : ''}></div>;
204
+ },
205
+ });
206
+
207
+ var shallowRenderer = ReactTestUtils.createRenderer();
208
+ shallowRenderer.render(<SimpleComponent />);
209
+ var result = shallowRenderer.getRenderOutput();
210
+ expect(result.type).toEqual('div');
211
+ expect(result.props.className).toEqual('');
212
+ result.props.onClick();
213
+
214
+ result = shallowRenderer.getRenderOutput();
215
+ expect(result.type).toEqual('div');
216
+ expect(result.props.className).toEqual('clicked');
217
+ });
218
+
219
it('can pass context when shallowly rendering', function() {
220
var SimpleComponent = React.createClass({
221
contextTypes: {