如果我在 findGood
函数中注释行 return Promise.reject(err);
,则测试用例应该失败。这意味着,如果我没有从函数中返回,则测试中的 catch
block 应该是 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
返回一个 Promise 那么为什么不使用 chai-as-promised
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
});
});
关于javascript - 处理 Promise 拒绝案例 Mocha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391306/