You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Storybook中Mock NextAuth.js会话的技术方案问询

NextAuth + Storybook 会话Mock问题(基于App Router的NextJS项目)

我有一个采用App Router的NextJS应用,集成了NextAuth.js与Storybook。项目中通过HOC(withAuthProvider)将组件包裹在基于next-auth SessionProvider的AuthProvider中导出。现需为MyClientComponent编写Storybook故事,但无法Mock会话或注入模拟会话,当前尝试的几种方案均不适用,具体信息如下:

相关代码

context/AuthProvider.tsx

import { SessionProvider } from 'next-auth/react';
// ...
export default function AuthProvider({children}) {
  return <SessionProvider>{children}</SessionProvider>
}

hoc/withAuthProvider.tsx

export const withAuthProvider = (WrappedComponent) => {
  const ComponentWithSP = (props) => {
    <AuthProvider>
      <WrappedComponent {...props} />
    </AuthProvider>
  };
  return ComponentWithSP;
}

组件导出方式

export default withAuthProvider(MyClientComponent);

获取会话代码

const { data: session, status } = useSession({
  required: true,
  onUnauthenticated() {
    redirect('/api/auth/signin');
  },
});

已尝试的无效方案

  • 适用于无HOC场景的NextAuth+Storybook配置方案,不符合当前项目的HOC架构
  • 已过时的next-auth-mock工具库,无法正常使用
  • 按照Storybook模块Mock文档配置后,仍会触发未认证重定向
  • StackOverflow上的相关解决方案,尚未解决问题

使用版本

  • Node: 22.2.0
  • next: 14.2.3
  • next-auth: 4.24.7(注:原标注为24.7,推测为版本号笔误)
  • storybook: 8.1.5

内容的提问来源于stack exchange,提问作者el n00b

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 04:32:10