在节点6中,有没有办法使用例如茉莉花的允诺捕获块进行测试:
try{
Promise.resolve(someFunction()).then(response => {
callback(response);
}).catch(err => {
//never here
});
} catch (err => {
//always getting to here
}
测试看起来像这样。
sandbox.stub(js, 'someFunction').callsFake(() => {console.log ('calling fake method'); throw new Error('uh no!')});
是否要测试如果在Promise中捕获了错误,该catch块会捕获从somefunction到调用回调的所有错误吗?我该如何测试呢?
T.I.A
答案 0 :(得分:0)
仅测试您的someFunction
抛出错误的情况。
对于顺序的诺言调用,捕获将捕获任何拒绝的诺言
这是一个示例:
const divideByZero = function(num,den){
return new Promise((resolve,reject)=>{
if(den == 0){
reject('can not divide by zero !!');
}
else{
resolve(num/den);
}
});
}
divideByZero(2,0)
.then((res)=>{
console.log(res);
})
.catch((err)=>{
console.log('Reject catched');
console.log(err)
});
Promise.resolve(divideByZero(2,0)).catch((err)=>{
console.log('Reject catched');
console.log(err)
})
divideByZero(2,0)
.then((res)=>{
console.log(res);
})
.catch((err)=>{
console.log('Reject catched');
console.log(err)
})