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.