Chai-As-Promised:当承诺抛出错误时处理错误

时间:2016-04-19 21:35:38

标签: javascript mocha bluebird chai

我需要测试以下代码:

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退出正常。有没有更好的方法来测试这种情况?

1 个答案:

答案 0 :(得分:0)

Catch旨在捕获并纠正任何错误,而不是重新抛出它们。因此,返回错误或被拒绝的承诺是处理此问题的正确方法。