[Fiber] Fix tests for Fiber in ReactElement-test (#8150)
* Test Fiber internals differently in ReactElement Instead of being able to access the owner's instance via getPublicInstance(), we use the Fiber's stateNode. (Fiber does not have methods, it's just a structure!) * Fix isCompositeComponentWithType for fiber In ReactTestUtils.isCompositeComponentWithType, we provide a way to walk through Fiber's internals in place of using _currentElement.type. We keep support for non-fiber though. * Test fiber reconciler consistently Use typeof instance.tag to test if we're using the fiber reconciler * Remove unnecessary comment
Robin Ricard committed
Oct 30, 2016 at 01:42 UTC
6d747a742647f6e22790919647af36829e1f06a4
2 files changed
+8
-4
src/isomorphic/classic/element/__tests__/ReactElement-test.js
+5
-1
@@ -266,7 +266,11 @@ describe('ReactElement', () => {
266
React.createElement(Wrapper)
267
);
268
269
- expect(element._owner.getPublicInstance()).toBe(instance);
269
+ if (typeof element._owner.tag === 'number') { // Fiber reconciler
270
+ expect(element._owner.stateNode).toBe(instance);
271
+ } else { // Stack reconciler
272
+ expect(element._owner.getPublicInstance()).toBe(instance);
273
+ }
274
});
275
276
it('merges an additional argument onto the children prop', () => {
src/test/ReactTestUtils.js
+3
-3
@@ -157,9 +157,9 @@ var ReactTestUtils = {
157
return false;
158
}
159
var internalInstance = ReactInstanceMap.get(inst);
160
- var constructor = internalInstance
161
- ._currentElement
162
- .type;
160
+ var constructor = typeof internalInstance.tag === 'number' ?
161
+ internalInstance.type : // Fiber reconciler
162
+ internalInstance._currentElement.type; // Stack reconciler
163
164
return (constructor === type);
165
},