1

我看过很多关于测试 Promise 拒绝的信息,但是想知道是否有人知道如何编写一个如果 Promise 链不以“.catch”结尾的测试会失败?我试图防止被吞下的错误。

例如,这将通过测试:

doSomething()                            // returns a Promise
.then(doSomethingElse)                   // returns a Promise
.then(handleResult)
.catch((err) => { console.log(err); });  // logs errors from any rejections

这将失败:

doSomething()                            // returns a Promise
.then(doSomethingElse)                   // returns a Promise
.then(handleResult);                     // no catch = swallowed errors

我正在使用 mocha 和 chai-as-promised。我没有使用任何承诺库,只是使用原生 es2015。

4

1 回答 1

0

您需要返回承诺并使用 chai-as-promised 测试它被拒绝

在应该风格:

return doSomething()                            
.then(doSomethingElse)                   
.then(handleResult).should.be.rejectedWith(Error);  

或者

return doSomething()                            
.then(doSomethingElse)                   
.then(handleResult).should.be.rejected; 

return很重要

于 2017-03-21T07:44:42.330 回答