globalSetup
- 类型:
string | string[] - 默认值:
undefined
Rstest 中的 globalSetup 选项允许你运行 setup 和 teardown 代码,这些代码会在所有测试之前和完成后执行。这对于以下场景很有用:
- 启动和停止数据库
- 初始化测试服务
- 测试运行后清理资源
rstest.config.ts
与 setupFiles 的区别
根据资源需要的作用范围选择:
setupFiles 不会识别导出的 setup 或 teardown 函数。文件顶层代码会在每个测试文件执行前运行,可以在其中注册 hook 来清理资源。
全局设置文件格式
你可以用两种格式编写全局设置文件:
命名函数(推荐)
两个导出可以省略其一;两个都没有、也没有默认导出函数的文件会让运行失败。
返回 teardown 函数的默认函数
向测试传递值
globalSetup 在独立的 setup worker 中运行。测试无法访问其中的模块作用域变量,例如数据库连接。可以通过环境变量传递连接信息,再在测试环境中创建连接。
globalSetup 中的环境变量变更会传递给 Node.js 测试 worker,不会修改宿主进程的 process.env。
Browser 项目
Browser Mode 的环境变量共享遵循以下规则:
- Browser 项目自身的
globalSetup所产生的变更,可以通过process.env和import.meta.env读取,与内置的NODE_ENV、RSTEST一起生效。 - 显式的
env配置优先于 globalSetup 中设置的值。 - 其他宿主环境变量不会自动传递给 Browser 测试。在混合 Node.js 和 Browser 项目中,Node.js 项目 globalSetup 中的变更不会合并到 Browser 测试中。
Browser provider hook(modifyRstestConfig)在测试发现阶段执行,早于 setup 阶段,因此其中新增或修改的 globalSetup 条目也会生效。
Watch 模式
项目的 globalSetup 成功执行后,watch 模式下的重新运行会复用这次初始化结果,直到 watch 会话关闭时才执行 teardown。需要在每个测试文件执行前重复运行的初始化逻辑,应放在 setupFiles 中。
多个全局设置文件
当使用多个全局设置文件时:
- 设置函数按提供的顺序顺序执行
- teardown 函数按相反顺序执行(LIFO - 后进先出)
- 如果任何设置失败,整个测试运行都会失败
示例:数据库设置
rstest.config.ts