Skip to content

参考

基于 Jest v30.x 编写

速查

  • 跑测试:jest;监听:jest --watch;覆盖率:jest --coverage;更新快照:jest -u
  • 过滤:-t "名"(测试名)、文件名--testPathPatterns(Jest 30 改名,注意末尾 s)
  • 完整说明见 入门 / 配置 / 测试 API / 断言与快照 / 模拟

CLI 选项

命令说明
jest运行所有测试
jest <pattern>按文件名正则过滤
jest -t "<正则>"按测试名过滤
jest --watch监听(只跑变更相关,需 git)
jest --watchAll监听(跑所有)
jest --coverage收集覆盖率
jest -u更新快照(--updateSnapshot
jest --ciCI 模式:新快照直接失败、不自动保存
jest --runInBand / -i串行执行(调试用)
jest --detectOpenHandles检测未关闭句柄(隐含 --runInBand
jest --shard=1/3分片并行(CI)
jest --testPathPatterns按路径正则(Jest 30 由 --testPathPattern 改名)

常用配置项

配置默认说明
testEnvironment"node"jsdom 需单独装 jest-environment-jsdom
presetts-jest
transform{ "\\.[jt]sx?$": "babel-jest" }转换器
moduleNameMapper路径别名 / 资源 mock
setupFilesAfterEnv[]框架就绪后、每文件前运行
clearMocks / resetMocks / restoreMocksfalse自动清理策略
coverageProvider"babel""v8"
automockfalse全模块自动 mock
testEnvironmentOptions.globalsCleanup"soft"Jest 30 省内存,可设 "on"

jest.* API

API用途
jest.fn(impl?)造 mock 函数
jest.spyOn(obj, key)监视方法(默认仍调原实现)
jest.mock(path, factory?)模块 mock(CJS 提升)
jest.unstable_mockModule()ESM 模块 mock(factory 必填)
jest.requireActual(path)取原始模块(同步
jest.createMockFromModule()从模块生成自动 mock
jest.useFakeTimers()启用假定时器
jest.advanceTimersByTime()推进定时器
jest.advanceTimersToNextFrame()推进到下一 rAF 帧(Jest 30)
jest.onGenerateMock(cb)mock 生成全局 hook(Jest 30)
jest.clearAllMocks()批量清理 / 重置 / 恢复

常用 expect matchers

matcher用途
toBe / toEqual / toStrictEqual相等(引用 / 深 / 严格)
toContain / toContainEqual / toHaveLength包含 / 长度
toHaveProperty / toMatchObject属性 / 对象部分匹配
toThrow抛错
resolves / rejectsPromise(记得 await
toHaveBeenCalledWithmock 调用断言
expect.objectContaining / arrayOf非对称匹配(arrayOf 为 Jest 30 新增)
toMatchSnapshot / toMatchInlineSnapshot快照

官方资源