明明单独跑某个测试是通过的,怎么全部一起跑就挂了呢

  1. 你是否遇到过单独跑test case 3是通过的,但是全部整个文件一起跑就挂了呢

  2. 你的第一反应是前面的某个依赖项影响到test case 3了

  3. 于是你在最前面写下了

    复制代码
    afterEach(() => {
       jest.clearAllMocks 
    })
  4. 重新跑测试文件,仍然是挂的

Note: clearAllMocks并不能解决所有的mock

Jest中关于清除和重置mock的方法有以下这些,他们为不同的mock做清扫工作

jest.clearAllMocks()

  • 清除存储在mock.calls,mock.instances,mock.context,mock.results.
  • 这种场景一般是同一个方法被call了几次,每次的数据或者参数都不一样
  • 注意:调用这个方法会替换掉mockFn.mock

jest.resetAllMocks()

  • 重置所有mock的状态。
  • 适用于有状态变更的测试场景

jest.restoreAllMocks()

  • 恢复所有的mock和替换属于的值为初始值
  • 注意:此方法只作用mock了jest.spyOn()方法和属性替换用了jest.replaceProperty().其他的mock需要手动恢复

jest.resetModuls()

  • 重置module的注册
复制代码
```
const sum1 = require('../sum');
jest.resetModules();
const sum2 = require('../sum');
sum1 === sum2;
// > false (Both sum modules are separate "instances" of the sum module.)
```
  • 也可以用 isolateModulesAsync

jest.clearAllTimers()

复制代码
### `移除任何待办的计时器`

   
相关推荐
FungLeo14 小时前
成为全栈·React 管理后台篇·服务端状态、会话状态、界面状态:不要都塞进 Zustand
react·状态管理·zustand·react hook form·成为全栈·tanstack query
FungLeo17 小时前
成为全栈·React 管理后台篇·前端鉴权闭环:内存令牌、刷新旋转与路由守卫
react·路由守卫·zustand·刷新令牌·成为全栈·前端鉴权
余槐i1 天前
从useState到Agent状态:React状态管理为何在AI工作流中失灵?
react·状态管理·ai agent·langgraph·tool calling
liangshanbo12152 天前
React useTransition 和 useDeferredValue 面试题整理
react·usetransition
梦想的颜色2 天前
【AI科普】AI 时代,纯 H5+CSS PK React & Vue:前端技术孰优孰劣深入剖析
ai·前端框架·大模型·vue·react·html5·vibecoding
liangshanbo12152 天前
面试题:React 中 useReducer 和 useState 有什么区别?什么时候应该使用 useReducer?
react·usereducer
FungLeo3 天前
成为全栈·React 管理后台篇·后台骨架:布局、数据路由与分层守卫
react·管理后台·权限控制·react router·前端路由·成为全栈
秋秋小事3 天前
React hooks总览
react
西瓜太郎12345 天前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
星辰徐哥5 天前
本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
docker·ai·node.js·html·音视频·react·remotion