gpt4 book ai didi

node.js - 当抛出的任何错误都没有冒泡时,如何在 promise 中做出断言?

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

用 mocha 运行它会导致超时,而不是让 mocha 捕获错误以便它立即失败..

var when = require('when');
var should = require('should');

describe('', function() {
it('', function(done) {
var d = when.defer();
d.resolve();
d.promise.then(function() {
true.should.be.false;
false.should.be.true;
throw new Error('Promise');
done();
}); }); });

http://runnable.com/me/U7VmuQurokZCvomD

是否有另一种方法可以在 promise 中进行断言,以便当它们失败时被 mocha 捕获导致它立即失败?


根据 chai 的建议,我调查了一下,似乎我必须直接访问 promise 对象,对吗?问题是我没有直接使用 promise ..如果我简化了我的错,但这将是一个更接近现实的例子

function core_library_function(callback){
do_something_async(function which_returns_a(promise){
promise.then(function(){
callback(thing);
}); }); }

describe('', function() {
it('', function(done) {
core_library_function(function(thing){
...
done();
}); }); });

所以我真的无法直接控制 promise,它抽象得很远。

最佳答案

在 Mocha 中使用 promises 时,您必须在测试中return promise 并且需要删除 done 参数,因为没有使用回调.

it('', function() {
var d = when.defer();
d.resolve();
return d.promise.then(function() {
throw new Error('Promise');
});
});

这在 Working with Promises 下的文档中有描述:

Alternately, instead of using the done() callback, you can return a promise.

关于node.js - 当抛出的任何错误都没有冒泡时,如何在 promise 中做出断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24557583/

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