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

Jest中如何导出describe/test块并在其他测试文件中复用

Jest大测试文件拆分及按指定顺序执行方案

1. 子测试文件编写逻辑

你需要将对应业务域的describe块包裹在一个命名函数内,再导出该函数即可实现你要的导出效果,Jest的describe是执行时才会注册测试用例的全局函数,不能直接导出,包装成函数导出后调用即可完全匹配你期望的使用形式:

// gridTest.js(grid业务域子测试文件)
export default function gridTest() {
  describe('grid 业务逻辑测试', () => {
    // 该业务域下所有测试用例都写在当前describe内部
    test('网格列表渲染正常', () => {
      // 测试逻辑
      expect(1 + 1).toBe(2)
    })

    test('网格筛选功能正常', () => {
      // 测试逻辑
    })
  })
}

其他业务域的子测试文件写法同理,比如表单测试子文件formTest.js、用户模块测试子文件userTest.js都按照上述格式封装导出即可。

2. 总测试入口文件编写逻辑

在总文件中按你需要的执行顺序导入子测试函数,依次调用即可按顺序执行对应业务域的测试用例:

// sanityTest.js(总测试入口文件)
import gridTest from './gridTest'
import formTest from './formTest'
import userTest from './userTest'

// 按你指定的顺序调用子测试函数,Jest会严格按照调用顺序执行测试
describe('全量业务测试集合', () => {
  gridTest()
  formTest()
  userTest()
})

注意事项

  • 如果不希望子测试文件被Jest默认扫描单独执行,可以修改jest.config.js中的testMatch配置,仅匹配总入口文件即可:
// jest.config.js 配置示例
module.exports = {
  testMatch: ["**/__tests__/sanityTest.js"]
}
  • 如果需要子测试文件也支持单独运行,可以在子文件末尾添加以下判断逻辑:
// 加在gridTest.js文件末尾
if (require.main === module) {
  gridTest()
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:18:01