diff --git a/src/__tests__/render.test.js b/src/__tests__/render.test.js index 9d32a50bd..79203366d 100644 --- a/src/__tests__/render.test.js +++ b/src/__tests__/render.test.js @@ -124,6 +124,7 @@ test('getByText, queryByText', () => { expect(queryByText(/change/i)).toBe(button); expect(queryByText('InExistent')).toBeNull(); + expect(() => queryByText(/fresh/)).toThrow('Expected 1 but found 3'); }); test('getAllByText, queryAllByText', () => { diff --git a/src/helpers/queryByAPI.js b/src/helpers/queryByAPI.js index df9ee58f1..15458af86 100644 --- a/src/helpers/queryByAPI.js +++ b/src/helpers/queryByAPI.js @@ -11,58 +11,60 @@ import { getAllByText, getAllByProps, } from './getByAPI'; -import { logDeprecationWarning } from './errors'; +import { ErrorWithStack, logDeprecationWarning } from './errors'; -export const queryByName = (instance: ReactTestInstance) => ( - name: string | React.ComponentType<*> -) => { - logDeprecationWarning('queryByName', 'getByName'); - try { - return getByName(instance)(name); - } catch (error) { +const createQueryByError = (error: Error, callsite: Function) => { + if (error.message.includes('No instances found')) { return null; } + throw new ErrorWithStack(error.message, callsite); }; -export const queryByType = (instance: ReactTestInstance) => ( - type: React.ComponentType<*> -) => { - try { - return getByType(instance)(type); - } catch (error) { - return null; - } -}; +export const queryByName = (instance: ReactTestInstance) => + function queryByNameFn(name: string | React.ComponentType<*>) { + logDeprecationWarning('queryByName', 'getByName'); + try { + return getByName(instance)(name); + } catch (error) { + return createQueryByError(error, queryByNameFn); + } + }; -export const queryByText = (instance: ReactTestInstance) => ( - text: string | RegExp -) => { - try { - return getByText(instance)(text); - } catch (error) { - return null; - } -}; +export const queryByType = (instance: ReactTestInstance) => + function queryByTypeFn(type: React.ComponentType<*>) { + try { + return getByType(instance)(type); + } catch (error) { + return createQueryByError(error, queryByTypeFn); + } + }; -export const queryByProps = (instance: ReactTestInstance) => (props: { - [propName: string]: any, -}) => { - try { - return getByProps(instance)(props); - } catch (error) { - return null; - } -}; +export const queryByText = (instance: ReactTestInstance) => + function queryByTextFn(text: string | RegExp) { + try { + return getByText(instance)(text); + } catch (error) { + return createQueryByError(error, queryByTextFn); + } + }; -export const queryByTestId = (instance: ReactTestInstance) => ( - testID: string -) => { - try { - return getByTestId(instance)(testID); - } catch (error) { - return null; - } -}; +export const queryByProps = (instance: ReactTestInstance) => + function queryByPropsFn(props: { [propName: string]: any }) { + try { + return getByProps(instance)(props); + } catch (error) { + return createQueryByError(error, queryByPropsFn); + } + }; + +export const queryByTestId = (instance: ReactTestInstance) => + function queryByTestIdFn(testID: string) { + try { + return getByTestId(instance)(testID); + } catch (error) { + return createQueryByError(error, queryByTestIdFn); + } + }; export const queryAllByName = (instance: ReactTestInstance) => ( name: string | React.ComponentType<*>