【发布时间】:2025-12-16 09:30:01
【问题描述】:
我正在测试一个返回承诺的函数。我想断言,在某些情况下,返回的承诺永远不会解决(不解决也不拒绝)。
如何使用 Mocha 进行测试?
如果我运行以下命令:
describe('under certain conditions', function () {
let promise;
beforeEach(function () {
promise = new Promise((resolve, reject) => {});
});
it('should hang forever', function () {
return promise;
});
});
我收到以下错误:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves
【问题讨论】:
-
定义“从不”。
-
如上面给出的示例 -
new Promise((resolve, reject) => {})永远不会解决,对吧? -
你真的不能。确保承诺永远不会被解决的唯一方法是证明没有仍然引用它的
resolve/reject函数。所以像gc.collect(); const a = gc.memory(); promise = null; gc.collect(); const b = gc.memory(); return a - b < 0这样的东西可能会做到,但它看起来并不可靠。 -
@dayuloli 您是否等待了无限长的时间才能确定?
-
@dayuloli 见*.com/a/30654451/1048572(我认为我的语法错误,我也怀疑它是否有效,但你可以试试)
标签: javascript testing promise mocha.js es6-promise