gpt4 book ai didi

node.js - Mocha 因 Q promises 的失败断言而超时

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:19 24 4
gpt4 key购买 nike

为什么当 Q future 中的断言失败时 mocha 会超时?发生这种情况时,您也看不到断言失败。如果我只使用回调,就不会发生这种情况。我应该如何在仍然使用 futures 的同时写这个但看到断言错误而不是超时?

var Q = require('q');
function hack() {
var ret = Q.defer();
ret.resolve(true);
return ret.promise;
}

it('test', function(done) {
hack().then(function(bool) {
assert(false);
done();
});
});

最佳答案

断言调用抛出异常,该异常被 Q 捕获以正确遵守 promise spec .所以 mocha 永远不会到达 done(),也不会看到抛出的异常。你可以这样做:

it('test', function(done) {
hack().then(function(bool) {
assert(false);
done();
}).catch(function(err){
done(err);
});
});

[edit] 或者,您可以完全省略 done 参数,直接从测试函数返回 promise,在这种情况下,mocha 将根据返回的结果通过/失败测试 promise :

it('test', function() {
return hack().then(function(bool) {
assert(false);
});
});

...这是简化测试函数的好方法。在此线程的其他地方向 Taytay 提出建议,以指出这一点。

关于node.js - Mocha 因 Q promises 的失败断言而超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23986313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com