当尝试为使用
useRouter()
钩子的 Next.js 应用程序编写简单测试时,vitest
开始抛出错误。
寻找模拟 next/router 的方法,以使用 vitest 进行单元测试。
经过一些研究和反复试验,我找到了模拟的方法
next/router
。
您需要为测试设置创建一个设置文件并配置
vitest
来使用它。
// vitest.config.js/ts
export default defineConfig({
test: {
environment: "jsdom",
globals: true,
setupFiles: ["vitestSetup.ts"],
},
});
现在在根目录中创建
vitestSetup.ts
,并包含以下内容。
// vitestSetup.ts
import { beforeAll, vi } from "vitest";
beforeAll(() => {
vi.mock("next/router", () => require("next-router-mock"));
})
恭喜!您已成功嘲笑
next/router
。