Test de propriétés spécifiques des promesses rejetées, avec Mocha et Chai comme promis

J'essaie de tester les spécificités d'une promesse rejetée, en utilisant Chai-as-Promised , Mocha et le dialecte «devrait». Les promesses sont mises en œuvre par bluebird .

Cela fonctionne bien:

it('it should be rejected when given bad credentials', function () { var promiseOfUsers = db.auth("bad", "credentials").getUsers(); return promiseOfUsers.should.eventually.be.rejectedWith(Error) }); 

Il existe une propriété "statut" sur cette erreur. J'aimerais affirmer que le statut est 401

Cela ne fonctionne pas:

 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) }); 

Il semble que toute tentative d'affirmation sans référencer "rejeté" ou rejeté avec (Erreur) échoue et imprime l'erreur dans la console.

Comment puis-je approfondir la raison du rejet?

Je pense que le gestionnaire rejeté () a des problèmes. Mais vous pouvez faire comme ceci:

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

Si vous souhaitez vérifier si votre promis a été rejeté et vérifier l'objet qui en résulte (aka la raison) :

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

Vous pouvez modifier deep.equal à l'une des autres correspondantes de chai .

Note: Ceci est une extension de la réponse @ sertug et, espérons-le, sera utile pour les autres venant ici qui recherchent cela.