Description
What is your question:
I have seen the following which was helpful: testing-library/react-hooks-testing-library#23
This question steams further from that with regards to passing initialProps
.
I have updated React and DOM ("react": "18.2.0", "react-dom": "18.2.0",
) and the React Testing Library ("@testing-library/react": "14.0.0",
) to the most recent versions. I have followed that pattern, but notice that the props passed into Provider are only available via children
. Please see the example below (borrowed from the tests within the library https://github.com/testing-library/react-hooks-testing-library/blob/1e01273374af4e48a0feb1f2233bf6c76d742167/src/__tests__/useContext.test.tsx):
test('should update value in context when props are updated', () => {
const TestContext = createContext('foo');
const wrapper = ({
current,
children,
}: {
current: string;
children: any;
}) => {
console.log({ current });
console.log({ children });
console.log('nested', children.props.renderCallbackProps);
return (
<TestContext.Provider value={current}>{children}</TestContext.Provider>
);
};
const { result, rerender } = renderHook(() => useContext(TestContext), {
wrapper,
initialProps: {
current: 'bar',
},
});
rerender({ current: 'baz' });
expect(result.current).toBe('baz');
});
// console.logs
console.log
{ current: undefined }
console.log
{
children: {
'$$typeof': Symbol(react.element),
type: [Function: TestComponent],
key: null,
ref: null,
props: { renderCallbackProps: [Object] },
_owner: null,
_store: {}
}
}
console.log
nested { current: 'baz' }
Was this the intended change? Are we supposed to only pass children
to a wrapper
and then desconstruct those props from it? Can we update the tests or docs to represent the recommended pattern?