MCPcopy
hub / github.com/callstack/react-native-testing-library / renderHook

Function renderHook

src/render-hook.tsx:27–56  ·  view source on GitHub ↗
(
  hookToRender: (props: Props) => Result,
  options?: RenderHookOptions<NoInfer<Props>>,
)

Source from the content-addressed store, hash-verified

25};
26
27export async function renderHook<Result, Props>(
28 hookToRender: (props: Props) => Result,
29 options?: RenderHookOptions<NoInfer<Props>>,
30): Promise<RenderHookResult<Result, Props>> {
31 const result = React.createRef<Result>() as RefObject<Result>;
32
33 function HookContainer({ hookProps }: { hookProps: Props }) {
34 const renderResult = hookToRender(hookProps);
35 React.useEffect(() => {
36 result.current = renderResult;
37 });
38
39 return null;
40 }
41
42 const { initialProps, wrapper, ...rest } = options ?? {};
43 validateOptions('renderHook', rest, renderHook);
44 const renderOptions = wrapper ? { wrapper } : {};
45 const { rerender: rerenderComponent, unmount } = await render(
46 // @ts-expect-error since option can be undefined, initialProps can be undefined when it shouldn't be
47 <HookContainer hookProps={initialProps} />,
48 renderOptions,
49 );
50
51 return {
52 result: result,
53 rerender: (hookProps: Props) => rerenderComponent(<HookContainer hookProps={hookProps} />),
54 unmount,
55 };
56}

Callers 15

expected.tsxFile · 0.85
input.tsxFile · 0.85
expected.tsxFile · 0.85
input.tsxFile · 0.85
expected.tsxFile · 0.85
input.tsxFile · 0.85
expected.tsxFile · 0.85
input.tsxFile · 0.85
expected.tsxFile · 0.85
input.tsxFile · 0.85
expected.tsxFile · 0.85
input.tsxFile · 0.85

Calls 2

validateOptionsFunction · 0.90
renderFunction · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…