import mockRouter from "next-router-mock"; import { createDynamicRouteParser } from "next-router-mock/dynamic-routes"; import { vi } from "vitest"; vi.mock("next/router", () => vi.importActual("next-router-mock")); mockRouter.useParser( createDynamicRouteParser([ // @see https://github.com/scottrippey/next-router-mock#dynamic-routes ]) ); vi.mock("next/navigation", async (importOriginal) => { const actual = await importOriginal(); const { useRouter } = await vi.importActual("next-router-mock"); const usePathname = vi.fn().mockImplementation(() => { const router = useRouter(); return router.pathname; }); const useSearchParams = vi.fn().mockImplementation(() => { const router = useRouter(); return new URLSearchParams(router.query?.toString()); }); return { ...actual, useRouter: vi.fn().mockImplementation(useRouter), usePathname, useSearchParams, }; });