我知道我并不需要知道Mockito如何在引擎盖下进行所有操作,以便能够使用它,但是这让我困惑不已,任何我很好奇的理解它。有几种Mockito方法,我不明白他们可能如何工作。一个很好的例子是:Mockito.when如何在引擎盖下工作
OngoingStubbing<T> Mockito.when(T methodCall)
您可以使用该做的事情,如:
Object mockedObject = Mockito.mock(Object.class);
Mockito.when(mockedObject.toString()).thenReturn("super cool string");
System.out.println(mockedObject.toString());
此代码将使输出:
super cool string
我知道如何使用它,但我不明白这可能如何工作。 Mockito.When如何知道我们所关心的模拟对象和方法?据我所知,我们没有传入mockedObject,我们传递了一个类型为String的值mockedObject.toString()。我很确定,在设置所有“when/thenReturn”之前,mockedObject.toString()只返回null。那么,为什么不在这一样做:
Object mockedObject = Mockito.mock(Object.class);
mockedObject.toString();
Mockito.when(null).thenReturn("super cool string");
System.out.println(mockedObject.toString());
显然,第二个代码段没有任何意义,但它似乎是两个代码段应在功能上等同。
编辑: 这两个代码段实际上是都是是一样的。请参阅我的回答以下我自己的问题。
这是发布问题后发现的一个经典案例。看到我的回答在 – NateW
以下https://stackoverflow.com/questions/14440270/how-does-mockito-when-invocation-work –