我正在尝试使用Chai-as-Promised,Mocha以及"应该"来测试被拒绝的承诺的具体细节。方言。承诺由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(错误),失败,只是将错误输出到控制台。
我如何深入研究拒绝原因?
答案 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的答案的延伸,希望对于那些来这里寻找此事的人有用。