我试图了解Mockito的内部功能。到目前为止,这段代码对我来说很难理解,我希望能够对Mockito的基本工作原理进行高层次的概述。
我编写了一些示例代码以演示我的当前理解:
class C {
String s;
public void getS() { return s; }
// ...
}
C cm = mock( C.class);
when( cm.method() ).thenReturn( "string value");
据我所知,“mock”方法只查看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();
}
如果有人了解内部机制或者有相关的讨论/博客链接,请分享 :)