2

たとえば、次のコードがあります。

SomeClass stub = Mockito.mock(SomeClass.class);

その後、スタブは SomeClass の通常の実装ですが、独自の動作があります (デフォルトでは例外をスローするだけですが、それで問題ありません)。

ライブラリで同じことを行うにはどうすればよいですか? いくつかのクラス、またはいくつかの wrap() メソッドを使用してさらに優れたインスタンスをラップして、そこでの動作をミックスできるようにしたいと考えています。

4

2 に答える 2

4

jmock と Mockito (jmock コードを使用) は両方とも、内部で cglib を使用してスタブ/プロキシを作成します。を参照してくださいClassImposterizer

単純なケースでは、Java のProxyメカニズムを使用して、スタブまたはモックしたいインターフェースの動的プロキシ (実際には単なる呼び出しハンドラー) を作成できます。

于 2011-08-18T08:46:18.737 に答える
0

proxyデザインパターンです。Proxy はモック化されたインターフェイスを実装し、モック化されたクラスを拡張するため、モック化された型にキャストできます。また、必要に応じて「実際の実装」に責任を委任することもできます。通常、このようなプロキシ スタブは、リフレクションを少し混ぜて作成されます。

于 2011-08-18T08:34:08.220 に答える