首页 文章

使用Mocha和Chai-as-Promised测试被拒绝承诺的特定属性

提问于
浏览
12

我正在尝试使用Chai-as-PromisedMocha和"should"方言来测试被拒绝的Promise的细节 . 承诺由bluebird实施 .

这很好用:

it('it should be rejected when given bad credentials', function () {

   var promiseOfUsers = db.auth("bad", "credentials").getUsers();
   return promiseOfUsers.should.eventually.be.rejectedWith(Error)

});

该错误有一个“status”属性 . 我想声称状态是401

这不起作用:

it('it should be rejected when given bad credentials', function () {

   var promiseOfUsers = db.auth("bad", "credentials").getUsers();
   return promiseOfUsers.should.eventually.be.rejectedWith(Error)
       .that.has.property('status')
       .that.equals(401)

});

似乎任何在没有引用“被拒绝”或者被拒绝(错误)的情况下断言的尝试都会失败并且只是将错误输出到控制台 .

How can I delve into the reason for the rejection?

2 回答

  • 10

    我认为rejectedWith()处理程序有一些问题 . 但你可以这样做:

    promiseOfUsers.should.be.rejected.and.eventually.have.property("status",401)

  • 7

    如果你想检查你的承诺是否被拒绝 and check the resulting object (aka the reason)

    return fooPromise.should.be.rejected.and.eventually.deep.equal({
       'x': 1,
       'y': 1,
       'z': 2
    })
    

    您可以将 deep.equal 更改为任何其他常用的其他 chai matchers .

    注意:这是@ sertug答案的延伸,希望对于那些正在寻找此问题的人来说非常有用 .

相关问题