RedwoodJS中如何正确设置Jest的testTimeout配置?
在RedwoodJS API中设置Jest testTimeout的正确方法
全局超时设置(推荐)
RedwoodJS的测试配置基于官方预设,直接在api/jest.config.js中添加testTimeout会触发未知选项警告,因为配置需要通过Redwood提供的createJestConfig函数生成。正确写法如下:
// api/jest.config.js const { createJestConfig } = require('@redwoodjs/testing/config') module.exports = createJestConfig({ rootDir: __dirname, testTimeout: 10000, // 全局设置10秒超时 })
如果需要覆盖根目录全局测试的超时,修改根目录jest.config.js时同样遵循这个结构:
// jest.config.js const { createJestConfig } = require('@redwoodjs/testing/config') module.exports = createJestConfig({ testTimeout: 10000, })
命令行临时设置
通过Redwood CLI传递Jest参数时,需确保参数正确转发到Jest进程,正确命令格式:
# 仅针对API侧测试设置超时 yarn rw test api -- --testTimeout 10000 # 针对所有测试设置超时 yarn rw test -- --testTimeout 10000
注意--是分隔Redwood CLI参数和Jest参数的关键,参数值用空格而非等号更稳妥(部分Jest版本对等号支持有差异)。
单个测试/场景的局部超时
如果仅需给特定测试或数据库场景设置超时,可直接在测试用例或scenario函数中指定:
- 单个测试用例:
test('获取复杂数据接口', async () => { // 测试逻辑 }, 10000) // 最后一个参数为超时时间
- Redwood Scenario场景:
scenario('创建带关联数据的记录', async ({ db }) => { // 场景逻辑 }, { timeout: 10000 }) // 最后一个参数传入配置对象设置超时
为什么之前的方法无效?
- 直接在
api/jest.config.js中添加testTimeout未通过createJestConfig函数生成,Redwood的预设会忽略未被识别的顶层配置项。 - 根目录
jest.config.js如果未使用createJestConfig,其配置会被Redwood的预设覆盖,无法生效到API侧测试。
内容的提问来源于stack exchange,提问作者Thomas G Henry LLC
相关产品推荐
相关产品推荐

