1. ホーム
  2. angularjs

[解決済み] Jasmineの "callThrough "と "callFake() "の実用的な例が欲しい

2022-03-04 09:55:48

質問

を実装するために勉強しています。 karma &です。 Jasmine をよりよく理解するために、その例をいくつか見ていきます。

について少し混乱しています。 callThrough .

誤解があれば訂正してください、若干似ているのは callFake() のように、実際に関数を呼び出しているわけではありません。で callFake() また、戻り値の型を持つ関数も提供しますが、これは callThrough .

Jasmineのドキュメントより。

and.callThroughでスパイをチェーンすることで、スパイはそれへのすべての呼び出しを追跡しますが、さらに実際の実装に委譲します。

この点について、ご教示ください。

更新しました。

悩んだ末に、共有する価値のある記事ということに気がつきました。 この質問につまずいた人へのMediumの記事です。

どのように解決するのですか?

よく理解できたようですね。

スパイ:and.callThrough

スパイをand.callThroughで連結することで、スパイはすべての を呼び出しますが、さらにその呼び出しを実際の を実装しています。

スパイ:and.callFake

スパイを and.callFake で連結することで、スパイへのすべての呼び出しが、and.callFake で連結されたスパイになります。 は提供された関数に委譲されます。

スパイされた関数が、フェイクが必要とする引数を受け取った場合。 も取得することができます。

プラス callThroughを追加した場合、スパイによる呼び出しを追跡するだけではありません。メソッドを呼び出してテストすることもできます。ここでのメソッドは実際に呼び出される。callFakeでは、引数をチェックすることで、正しく呼び出されるかをテストするだけです。本当のメソッドは呼び出されません。ということは、このメソッドは fake call