Estoy tratando de probar un componente que usa useRouter from next/router hook para obtener la route , pero recibo el siguiente error incluso simulando RouterContext:
Error: Uncaught [TypeError: (0 , _router.useRouter) is not a function] mi aplicación usa redux y también se burla con el Provider react-redux y mockStore .
Este es mi código de utilidad para renderizar mi componente:
const getCustomWrapper = (router, initialState) => { const Wrapper = ({ children }) => { const store = mockStore({ ...initialStateModel, ...initialState }) return ( <Provider store={store}> <RouterContext.Provider value={{ ...mockRouter, ...router }}> {children} </RouterContext.Provider> </Provider> ) } Wrapper.propTypes = { children: PropTypes.node } return Wrapper } const customRender = async (ui, { options, router, initialState } = {}) => { const Wrapper = getCustomWrapper(router, initialState) return render(<Wrapper>{ui}</Wrapper>, options) }Y mis pruebas son algo así:
const createComponent = (props = defaultProp, initialState = defaultInitialState) => { customRender(<MyComponet {...props} />, { initialState }) } it('should render my text', async () => { createComponent() const myText = screen.getByText('my text') expect(myText).toBeInTheDocument() })Versiones
next: 10.1.2, react-redux: 7.2.5, react: 16.13.1actualizaciones no es una opción en este momento =/
gracias de antemano