0

promise を返すコードの Jasmine 単体テストをいくつか書いていますwhen.js。私は自分が次のようなコードを書いていることに気づき続けています:

doMyThing().then(function(x) {
  expect(x).toEqual(42);
  done();
}).otherwise(function() {
  expect(true).toBe(false);
  done();
});

例外をキャッチする唯一の方法は関数 ( when.jsotherwise()の古いバージョン) を使用することであり、「失敗が検出されました」と言う Jasmine (2.0) 関数はないようです。expect(true).toBe(false)

これを行うためのより慣用的な方法はありますか?

4

2 に答える 2

2

Mocha のようなプロミス サポートを備えたテスト ライブラリを検討するか、この構文を提供する jasmine-as-promised のようなヘルパーを使用することを検討する必要があります。これにより、次のようなことができます。

// notice the return, and _not_ passing `done` as an argument to `it`:
return doMyThing().then(function(x) {
  expect(x).toEqual(42);
});

基本的に、戻り値はプロミスであるかどうかがチェックされ、それがプロミスである場合、テスト フレームワークはプロミスが拒否されたかどうかをチェックし、それを失敗として扱います。

于 2015-09-07T07:16:34.837 に答える