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

使用Jest模拟Auth0的useAuth0后如何断言logout已被调用

验证@auth0/auth0-react mock中logout调用的方法

你当前的mock写法存在一个小问题:每次调用useAuth0都会生成全新的logout mock函数,组件内部获取的logout和你在测试用例中手动获取的logout不是同一个引用,直接断言会失效,建议先调整mock结构:

// 顶层作用域定义公共的logout mock函数
const mockLogout = jest.fn();

jest.mock('@auth0/auth0-react', () => ({
    useAuth0: () => {
        return {
            logout: mockLogout,
        }
    }
}));

调整之后,在你触发了调用logout的测试逻辑(比如点击退出登录按钮、执行登出相关逻辑)后,就可以直接用jest内置方法做断言:

  • 验证logout至少被调用1次
expect(mockLogout).toHaveBeenCalled();
  • 验证logout被调用的次数
// 示例:验证仅被调用1次
expect(mockLogout).toHaveBeenCalledTimes(1);
  • 验证logout调用时传入了指定参数
// 示例:验证调用时传入了返回地址配置
expect(mockLogout).toHaveBeenCalledWith({
  returnTo: window.location.origin
});

内容的提问来源于stack exchange,提问作者Filippo Rivolta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:54:03