JEST 超时报错
报错:
Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.Error: Timeout - Async callback was
not invoked within the 5000ms timeout specified by jest.setTimeout.
at mapper (node_modules/_jest-jasmine2@24.9.0@jest-jasmine2/build/queueRunner.js:25:45)
描述:
运行测试组件是提示超时,即使skip的组件也超时,甚至运行成功的组件也超时;其他测试用例不超时,只有这个超时
解决过程:
- 看了提示的的API 没有头绪
- 怀疑这句导致了问题,但是其他地方也用了,没有类似超时报错: const erpText = await page.$$eval(css5, eles=>eles.map(ele=>ele.textContent.replace(/\s+/g,"")))
- 查看了配置文件,取消了 puppeteer.launch() 中的 timeout 参数无果
- 运行其他脚本,正常执行
- 对比两个脚本,发现 beforeAll() 模块异常,有区别,比正常的脚本多了2行代码;而执行时间,没有设定,默认 5000s, 增加到10000之后,问题解决
总结
原则:紧紧的扣住报错内容,从报错内容中找线索。
报错内容,提示超时,那肯定是哪里超时了;接下来就是超时的地方;脚本中,各个组件都设置了时间 (35000),一般足够用了,不会发生集体超时(排除了网络问题),所以只能是
beforeAll() 这种地方了。