我知道我並不需要知道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 –