Reputation: 902
I am trying to test the specifics of a rejected Promise, using Chai-as-Promised, Mocha, and the "should" dialect. Promises are implemented by bluebird.
This works fine:
it('it should be rejected when given bad credentials', function () {
var promiseOfUsers = db.auth("bad", "credentials").getUsers();
return promiseOfUsers.should.eventually.be.rejectedWith(Error)
});
There is a "status" property on that error. I would like to assert that status is 401
This does not work:
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)
});
It seems that any attempt to assert without referencing "rejected" or rejectedWith(Error), fails and just prints the error out to the console.
How can I delve into the reason for the rejection?
Upvotes: 14
Views: 4452
Reputation: 8618
If you want to check if your promised was rejected and check the resulting object (aka the reason):
return fooPromise.should.be.rejected.and.eventually.deep.equal({
'x': 1,
'y': 1,
'z': 2
})
You can change deep.equal
to the any of the usual other chai
matchers.
Note: This is an extension of @sertug's answer and hopefully will be useful for others coming here who looking for this.
Upvotes: 8
Reputation: 969
I think rejectedWith() handler has some issues. But you can do like this:
promiseOfUsers.should.be.rejected.and.eventually.have.property("status",401)
Upvotes: 12