Javascript 处理拒绝承诺个案摩卡

Javascript 处理拒绝承诺个案摩卡,javascript,node.js,promise,mocha.js,sinon,Javascript,Node.js,Promise,Mocha.js,Sinon,如果我评论行返回承诺。拒绝(err)在myfindGood函数中,测试用例应该失败。这意味着,如果我没有从函数返回,测试中的catch块应该是undefined var findGood = function (name) { return goodModel.findByName(name) .then( (result) => { .... return result; })

如果我评论行
返回承诺。拒绝(err)
在my
findGood
函数中,测试用例应该失败。这意味着,如果我没有从函数返回,测试中的
catch
块应该是
undefined

var findGood = function (name) {

    return goodModel.findByName(name)
        .then( (result) => {

            ....
            return result;


        })
        .catch( (err) => {          
            return Promise.reject(err);
        }); 
};
这是一个测试

it('good not found', function () {

   var goodModelStub = sinon.stub(goodModel, 'findByName');

   var error = 'Good not found';

   goodModelStub.returns(Promise.reject(error));

   return goodFinder.findGood('Sony')
     .catch(function (err) {
         assert.equal(err, error);
  });

}))

首先,不需要捕获错误,然后再次抛出,在适当的位置处理拒绝(本例中是您的测试用例)

findGood
返回承诺,为什么不使用


.catch((err)=>Promise.reject(err))
几乎是一个无用的语句,因为如果删除它,您会得到完全相同的行为。@Frxstrem那么我该怎么办?如果你知道的话,请你回答好吗?你必须像真实的一样呼唤承诺,而不是直接抓住
it('good not found', function () { 
   var goodModelStub = sinon.stub(goodModel, 'findByName');

   var error = 'Good not found';

   goodModelStub.returns(Promise.reject(error));

   return goodFinder.findGood('Sony').should.be.rejected
  });
});