13

Chai-as-PromisedMocha、および「すべき」方言を使用して、拒否された Promise の詳細をテストしようとしています。プロミスは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)

});

「rejected」または rejectWith(Error) を参照せずにアサートしようとすると失敗し、エラーがコンソールに出力されるだけのようです。

不採用の理由を詳しく調べるにはどうすればよいですか?

4

2 に答える 2

8

約束が拒否されたかどうかを確認し、結果のオブジェクト (理由)を確認したい場合:

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

deep.equal通常の他のchai マッチャーに変更できます。

注:これは@sertugの回答の拡張であり、これを探している他の人に役立つことを願っています.

于 2016-05-06T12:10:30.130 に答える