Mockito の内部機能がどのように機能するかを理解しようとしています。これまでのところ、コードを理解するのは難しかったので、Mockito の基本的な仕組みについて高レベルの調査を探しています。
現在の理解を示すために、いくつかのサンプル コードを作成しました。
class C {
String s;
public void getS() { return s; }
// ...
}
C cm = mock( C.class);
when( cm.method() ).thenReturn( "string value");
私が知る限り、「モック」メソッドは cm.getS() の戻り値しか見ていません。メソッドの名前を (スタブ化するために) どうすれば知ることができますか? また、メソッドに渡された引数をどのように知ることができますか?
mockito API メソッドは、内部オブジェクトのメソッドを呼び出します。
// org.mockito.Mockito
public static <T> OngoingStubbing<T> when(T methodCall) {
return MOCKITO_CORE.when(methodCall);
}
メソッドの呼び出しをいくつかの異なる抽象化とクラスおよびオブジェクトにたどりましたが、コードが非常に分離されているため、この方法で理解するのは困難です。
// org.mockito.internal.MockitoCore
public <T> OngoingStubbing<T> when(T methodCall) {
mockingProgress.stubbingStarted();
return (OngoingStubbing) stub();
}
したがって、誰かが内部構造を理解しているか、ディスカッション/ブログ投稿へのリンクを持っている場合は、共有してください:)