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

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

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

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

    |-------|--------------------------------------------------|
    | 1 2 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的注册
复制代码
|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 | `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()

复制代码
#### `移除任何待办的计时器`
相关推荐
over6972 分钟前
📸《拍照记单词》—— 从零到上线的完整开发指南(超详细版)
前端·人工智能·产品
毛骗导演3 分钟前
万字解析 OpenClaw 源码架构-架构概览
前端·架构
天才熊猫君11 分钟前
Flex布局深度解析:为什么我的Flex项目不按预期收缩?
前端
风雪心11 分钟前
Antd组件库Form的onValuesChange和getFieldsValue的调用时机分析
前端
Moment12 分钟前
2026 趋势预测:Vibe Coding 之后,人人都会拥有专属 Agent 吗?
前端·javascript·后端
前端Hardy28 分钟前
Bun 1.0 正式发布:JavaScript 运行时的新王者?启动快 5 倍,打包小 90%!
前端·javascript·面试
Bigger38 分钟前
从 Grunt 到 Vite:前端构建工具十几年的演化
前端·vite·前端工程化
IT_陈寒39 分钟前
Python 性能提升50%的5个魔法技巧,90%的人还不知道!
前端·人工智能·后端
前端Hardy39 分钟前
别再乱写正则了!一行 regex 可能让你的网站瘫痪 10 分钟
前端·javascript·面试
gyx_这个杀手不太冷静1 小时前
OpenCode 进阶使用指南(第二章:Skills 系统)
前端·ai编程