我正在尝试使用Chai-as-PromisedMocha和“应”方言来测试被拒绝的Promise的细节。 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)

});

该错误有一个“状态”属性。我想断定状态为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)

});

似乎在没有引用“rejected”或rejectedWith(Error)的情况下进行任何断言的尝试都会失败,并且只会将错误输出到控制台。

我如何研究拒绝的原因?

最佳答案

我认为rejectedWith()处理程序存在一些问题。但是您可以这样做:
promiseOfUsers.should.be.rejected.and.eventually.have.property("status",401)

09-16 09:13