【发布时间】:2013-03-19 13:35:51
【问题描述】:
我试图了解 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();
}
因此,如果有人了解内部结构或有讨论/博客文章的链接,请分享:)
【问题讨论】:
标签: unit-testing testing mocking mockito internals