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

时间:2014-06-02 00:43:55

标签: javascript testing promise mocha chai

我正在尝试使用Chai-as-PromisedMocha以及"应该"来测试被拒绝的承诺的具体细节。方言。承诺由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)

});

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

我如何深入研究拒绝原因?

2 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分:7)

如果你想检查你的承诺是否被拒绝并检查结果对象(又名原因)

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

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

注意:这是@ sertug的答案的延伸,希望对于那些来这里寻找此事的人有用。