1. ホーム
  2. unit-testing

[解決済み] モッキングフレームワークにおけるモッキングとスパイの比較

2022-04-26 21:26:50

質問

モッキングフレームワークでは、次のようなことができます。 模擬 物体または スパイ を付けています。この2つの違いは何ですか?また、どのような場合にどちらかを使うべきなのでしょうか?

を見てみると モッキート を使って、似たようなことをやっているのを見かけます。 スパイ はりぼて が、この2つの区別がよくわからない。

解決するには?

モックオブジェクトは、モックされたクラスを完全に置き換え、記録された値やデフォルト値を返します。モックは何もないところから作ることができます。ユニットテストでは、主にこれを使用します。

スパイ活動では、既存のオブジェクトを使用して、一部のメソッドだけを置き換えます。これは、巨大なクラスがあり、特定のメソッドだけをモックしたい場合に有効です(パーシャルモッキング)。以下、引用します。 Mockitoのドキュメント :

実物のスパイを作成することができます。スパイを使用するときは リアル メソッドが呼び出されます (メソッドがスタブされている場合を除く)。

本物のスパイを使うべき 慎重に、そして時折 例えば、レガシーコードを扱う場合などです。

迷ったらモックを使え。