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

