Mocha执行E2E测试时before all钩子超时错误求助
解决Mocha+Detox React Native E2E测试的"before all"超时问题
我来帮你搞定这个超时坑,之前做Detox测试时也遇到过一模一样的问题😉
问题根源
Mocha默认给钩子函数(比如before all)的超时时间只有2000ms,但Detox初始化过程需要启动模拟器、加载App,这些操作耗时肯定超过2秒,所以直接触发了超时错误。
解决方案
方案1:全局修改Mocha超时时间(推荐)
你可以通过mocha.opts文件或者package.json脚本直接设置全局超时:
- 如果用mocha.opts:在你的
e2e/mocha.opts文件末尾添加一行:
这里设置成10秒足够Detox完成初始化,你可以根据自己项目的实际加载速度调整数值。--timeout 10000 - 如果修改package.json脚本:把
e2e命令改成这样:"e2e": "mocha e2e --opts ./e2e/mocha.opts --timeout 10000"
方案2:单独给before钩子设置超时
如果不想全局调整超时,也可以在init.js的钩子函数里单独设置:
const detox = require('detox'); const config = require('../package.json').detox; require('babel-polyfill'); // 注意这里你之前多了个减号,要删掉! before(async function() { // 必须用普通function,不能用箭头函数,否则无法访问this.timeout this.timeout(10000); await detox.init(config); }); after(async () => { await detox.cleanup(); });
额外小提示
你提供的init.js里有个小错误:-require('babel-polyfill');前面多了个减号,记得改成require('babel-polyfill');,这个小问题可能也会影响测试执行。
调整完之后再运行你的E2E测试命令,应该就能顺利完成初始化,不会再出现超时错误了。
内容的提问来源于stack exchange,提问作者aditya
相关产品推荐
相关产品推荐

