根据文档TroubleShooting Synchronization,Detox测试框架提到测试框架将等待,并且只在应用程序“空闲”时执行下一个测试语句。
我现在遇到的问题是我的应用程序永远不会闲置,因为有些超时会持续触发。它可以在我的代码或第三方代码中。
这是输出的一个例子:
正如您所看到的,每隔几毫秒就会创建一个新的计时器。我想做的是跟踪哪一个,我可以看到ID,但不知道一个很好的方法来尝试跟踪这个(setTimeout)id的确切来源。
setTimout
,这样,至少确定它是第三方lib(它仍然无助于解决问题)。 答案 0 :(得分:0)
您可以使用以下方式轻松追踪setTimeouts:
// DEV mode only!
function failOnTimeout(func) {
const setTimeout = f => {
throw new Error(`Executing timeout \n ${f.toString()} \n`);
};
// A small trick to change scope:
eval("(" + func.toString() + ")()");
}
所以你可以这样做:
failOnTimeout(someMysteriousFunction);
并将为您提供该功能中第一个超时设置的堆栈跟踪(同步)。然后,您可以对其进行评论并搜索下一个。
但是,不是追踪所有超时,快速解决方案可能只是抛出一个未捕获的错误来结束该过程。