我需要测试以下代码:
function A(param){
// Process param
return B(param)
.catch(function(err){
//Process err
throw new customError(err); // throw a custom Error
})
.then(function(response){
// Handle response and return
return {status: 'Success'}
})
}
要测试它,我使用以下代码段:
return expect(A(param))
.to.eventually.have.property('status', 'Success');
当代码在函数A或B中没有中断时,这很好用,但是当它执行时,测试用例失败,grunt-mocha
无法退出,我认为这是由于事实它还在等待A解决。
如果我在catch块中添加return
语句而不是throw
,则grunt-mocha退出正常。有没有更好的方法来测试这种情况?
答案 0 :(得分:0)
Catch旨在捕获并纠正任何错误,而不是重新抛出它们。因此,返回错误或被拒绝的承诺是处理此问题的正确方法。