Jest+NextJs:您应该只在应用程序的客户端使用"next/router"



我在我的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
}));

相关内容

  • 没有找到相关文章

最新更新