Chai正如承诺:当承诺抛出错误时,处理错误
Chai-As-Promised: Handle errors when promise throws error
我有以下代码需要测试:
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
,那么咕哝的摩卡就可以退出了。有没有更好的方法来测试这种情况?
Catch的目的是捕获并更正任何错误,而不是重新抛出它们。因此,返回错误或被拒绝的承诺是处理此问题的正确方法。
相关文章:
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 承诺-如何正确地将错误附加到此示例
- 我能处理来自gap.client.load'的错误吗;的承诺
- $q.reject和处理AngularJS链接承诺中的错误
- 如何在使用替代承诺时解释 ajax 调用中的错误
- 处理角度.js承诺错误状态
- 为什么承诺会捕获语法错误
- Chai正如承诺:当承诺抛出错误时,处理错误
- 如何创建角度承诺中捕获的错误
- JS bluebird承诺错误没有给出任何细节
- 蓝鸟(或其他承诺库)保持承诺错误堆栈跟踪
- 异常捕获在功能上是否与承诺错误回调相同
- 如何在加载文件后将承诺错误传播到更高的承诺级别
- ES6承诺错误处理
- 多个承诺错误(承诺必须通过new构造)
- Nodejs承诺错误的使用
- 承诺错误/异常处理设计
- 处理链条中的承诺错误,是不是太急切了
- AngularJS - Firebase -承诺错误
- 如何正确处理请求-承诺错误