在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
相关产品推荐
相关产品推荐

