我有以下的測試方法:的Mockito:通緝,但不調用
MyClass myClass= Mockito.mock(MyClass.class);
Mockito.when(myClass.methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class))).thenReturn(Collections.<X, Y> emptyMap());
assertNull(myClass.methodToTest(myObject));
Mockito.verify(myClass).methodUsedInMethodBeingTested(Matchers.any(MyTypeParam.class));
的methodUsedInMethodBeingTested
是,我想嘲弄,並返回一個空映射的方法。但我收到失敗消息說
Wanted but not invoked myClass.methodUsedInMethodBeingTested()
。
MyClass
{
public XYZ methodToTest()
{
....
....
Map<X,Y> mp = methodUsedInMethodBeingTested(myTypeParam);
.....
}
public Map<X,Y> methodUsedInMethodBeingTested(MyTypeParam myTypeParam)
{
.....
}
}
感謝您的回答。我有兩個疑問:1.我無法做到這一點MyClass spy = Mockito.spy(MyClass.class);因爲它說Type mIsmatch無法從類轉換爲MyClass。 2.你能否更好地解釋這個問題「雖然有一個警告:因爲它是真正的方法被調用,所以你不應該使用Mockito.when,而應該選擇Mockito.doReturn(...),否則該方法會被稱爲一次真實:「 –
Kode
@Vwin我編輯過。我使用了一種不能在您的Mockito版本中出現的新方法。爲了您的第二個顧慮,我也澄清了。 – Tunaki
這是完美的。有效。感謝@RomanVottner。謝謝Tunaki,你真棒:)而且解釋變得更有意義。 – Kode