返回承诺时摩卡超过2000毫秒超时[重复]

Posted

技术标签:

【中文标题】返回承诺时摩卡超过2000毫秒超时[重复]【英文标题】:Mocha exceeding 2000ms timeout when returning a promise [duplicate] 【发布时间】:2017-06-23 11:56:41 【问题描述】:

我正在尝试测试我的 Express.js 控制器,但我经常遇到 mocha 超时告诉我关闭的问题。

文档 (https://mochajs.org/#working-with-promises) 和此处的答案:https://***.com/a/26572442/1646372 声明我可以返回我正在使用的承诺。

我已经用 Promises 包装了我的 express 控制器,这样我就可以在测试中返回它们。

我有一个基本测试,我可以运行该测试以始终收到错误消息:

it('should return', () => 
  return new Promise(resolve => 
    setTimeout(() => 
      resolve('hello');
    , 2300);
  );
);

我得到的错误是:

Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.

我不明白为什么会出现错误,因为我正在返回一个可以解决的承诺。

【问题讨论】:

【参考方案1】:

您可以在命令行中使用此标志--timeout 5000 设置超时,或者您可以将其添加到测试this.timeout(5000); 的第一行,在函数内部的describe 语句下。

【讨论】:

你写的超时时间是2300,超过2000默认时间是正常的! 对不起,它刚刚点击摩卡超时是最后的窗帘关闭。我在想,如果你返回一个承诺,超时就会被取消,你可以得到尽可能多的时间。现在想想,那会很危险 哈哈哈没关系的朋友!

以上是关于返回承诺时摩卡超过2000毫秒超时[重复]的主要内容,如果未能解决你的问题,请参考以下文章

错误:超过 2000 毫秒的超时。带有承诺的单元测试

嵌套承诺 - 摩卡 - 超过超时

暂停功能,直到承诺解决[重复]

使用 mocha 测试时超时 [重复]

无论如何都超过了摩卡超时

你如何将 setTimeout 包装在一个承诺中[重复]