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({