You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件末尾添加一行:
    --timeout 10000
    
    这里设置成10秒足够Detox完成初始化,你可以根据自己项目的实际加载速度调整数值。
  • 如果修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 09:03:33