我在我的Jest+ react -testing- library测试中模仿next/router
依赖:
import * as nextRouter from 'next/router';
export const routerData = {
pathname: '/users/create',
route: '/users/create',
query: { },
asPath: '/users/create',
isFallback: false,
basePath: '',
isReady: true,
isPreview: false,
isLocaleDomain: false,
events: {},
};
// mock router
jest.mock('next/router');
nextRouter.useRouter.mockImplementation(() => (routerData));
describe('a component that requires next/router, () => ... );
这已经正常工作,但更新到NextJs12.2.0
后,我得到这个警告:
没有找到路由器实例。你应该只使用"next/router"在你的应用程序的客户端
这个警告使我对模拟路由器的所有测试都失败。
解决这个问题的想法?
嗯,这似乎与12.2.0
无关。不知何故,我的上一个版本的Next -12.0.0
-没有抛出这个错误,但其他旧版本有。
Thanks tobistacos
const useRouter = jest.spyOn(require('next/router'), 'useRouter');
useRouter.mockImplementation(() => ({
pathname: '/',
...moreRouterData
}));