Skip to content

Commit

Permalink
react-test-renderer: improve findByType() error message (#17439)
Browse files Browse the repository at this point in the history
* improve findByType error message

* fix flow typing

* Adding a test for the "Unknown" branch when `getComponentName()` returns a falsy value. The error message in this case not the most descriptive but seems consistent with the `getComponentName(type) || 'Unknown'` pattern seen in multiple places in this code base.
  • Loading branch information
henryqdineen committed Feb 28, 2020
1 parent 4ee592e commit 053347e
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/react-test-renderer/src/ReactTestRenderer.js
Expand Up @@ -42,6 +42,7 @@ import {
ScopeComponent,
} from 'shared/ReactWorkTags';
import invariant from 'shared/invariant';
import getComponentName from 'shared/getComponentName';
import ReactVersion from 'shared/ReactVersion';

import {getPublicInstance} from './ReactTestHostConfig';
Expand Down Expand Up @@ -346,7 +347,7 @@ class ReactTestInstance {
findByType(type: any): ReactTestInstance {
return expectOne(
this.findAllByType(type, {deep: false}),
`with node type: "${type.displayName || type.name}"`,
`with node type: "${getComponentName(type) || 'Unknown'}"`,
);
}

Expand Down
Expand Up @@ -1022,4 +1022,14 @@ describe('ReactTestRenderer', () => {
expect(Scheduler).toFlushWithoutYielding();
ReactTestRenderer.create(<App />);
});

it('calling findByType() with an invalid component will fall back to "Unknown" for component name', () => {
const App = () => null;
const renderer = ReactTestRenderer.create(<App />);
const NonComponent = {};

expect(() => {
renderer.root.findByType(NonComponent);
}).toThrowError(`No instances found with node type: "Unknown"`);
});
});

0 comments on commit 053347e

Please sign in to comment.