javascript - 处理 Promise 拒绝案例 Mocha

标签 javascript node.js promise mocha.js sinon

如果我在 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/

相关文章:

javascript - 在 each() 和 forEach() 中使用 break 和 continue

javascript - 将大型 XML 文件转换为关系数据库

javascript - 如何将返回的对象转换为对象的 promise ?

javascript - 将对象从 SQL 查询函数传递到单独的函数

javascript - Promise 拒绝错误 - 未处理的拒绝错误 : closed

javascript - 访问 CORS 请求的响应 header

javascript - 将 Canvas 转换为 pdf

javascript - 如何将 promise 的结果保存到变量中?

node.js - 在 GraphQL 中处理 Mongoose 填充字段

javascript - 使用基于浏览器的 JavaScript 和 Node 操作本地文件系统