首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sinon-chai没有捕捉到拒绝承诺

sinon-chai没有捕捉到拒绝承诺
EN

Stack Overflow用户
提问于 2017-05-25 01:14:19
回答 1查看 382关注 0票数 0

//foo.js

代码语言:javascript
复制
const api = require('someApi');
exports.get = obj => {
  if (!obj.id) {
     return Promise.reject('no id');
  }

  api.get(obj.id)... 
}

//foo.spec.js

代码语言:javascript
复制
 let getStub;

  beforeEach(() => {
    getStub = sinon.stub(api, 'get');
  });

   it('should fail to retrieve location on insufficient data', () => {
    let obj = {};
    foo.get(obj)
      .catch(err => {
        getStub.should.have.not.been.called();
        expect(err).to.not.equal('undefined');
      })

  });

当我执行测试时,我收到这个错误:

代码语言:javascript
复制
(node:73773) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): TypeError: Cannot read property 'have' of undefined

该错误没有其他堆栈跟踪。据我所知,我已经通过捕获catch块中的错误来处理promise rejection。

这是一种测试的好方法吗?我应该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2017-05-25 01:17:34

这通常是因为"it“块在catch块捕获异常之前完成。您可以添加一个'done‘调用来防止这种情况:

代码语言:javascript
复制
it('should fail to retrieve location on insufficient data', (done) => 
{
    let obj = {};
    foo.get(obj)
      .catch(err => {
        getStub.should.have.not.been.called();
        expect(err).to.not.equal('undefined');
        done();
      })
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44164823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档