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

