diff --git a/src/renderers/testing/ReactTestRenderer.js b/src/renderers/testing/ReactTestRenderer.js index 56785d7f972c..ba6659fc4f6f 100644 --- a/src/renderers/testing/ReactTestRenderer.js +++ b/src/renderers/testing/ReactTestRenderer.js @@ -74,11 +74,15 @@ ReactTestComponent.prototype.toJSON = function() { childrenJSON.push(json); } } - return { + var object = { type: this._currentElement.type, props: props, children: childrenJSON.length ? childrenJSON : null, }; + Object.defineProperty(object, '$$typeof', { + value: Symbol.for('react.test.json'), + }); + return object; }; Object.assign(ReactTestComponent.prototype, ReactMultiChild.Mixin); diff --git a/src/renderers/testing/__tests__/ReactTestRenderer-test.js b/src/renderers/testing/__tests__/ReactTestRenderer-test.js index 5e233226b390..1d789c9ffcae 100644 --- a/src/renderers/testing/__tests__/ReactTestRenderer-test.js +++ b/src/renderers/testing/__tests__/ReactTestRenderer-test.js @@ -28,6 +28,22 @@ describe('ReactTestRenderer', function() { }); }); + it('exposes a type flag', function() { + function Link() { + return ; + } + var renderer = ReactTestRenderer.create(); + var object = renderer.toJSON(); + expect(object.$$typeof).toBe(Symbol.for('react.test.json')); + + // $$typeof should not be enumerable. + for (var key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + expect(key).not.toBe('$$typeof'); + } + } + }); + it('renders some basics with an update', function() { var renders = 0; var Component = React.createClass({