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)
在myfindGood
函数中,测试用例应该失败。这意味着,如果我没有从函数返回,测试中的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
});
});