2
與通常的Mockito,如果你是一個磕碰被調用多次的方法,你會做如何使用獲得的Mockito空Stubber爲程序化的磕碰
Mockito
.doReturn(0)
.doReturn(1)
.doReturn(2)
.when(mock).getValue();
我想programaitcally存根方法被調用多次,像
Stubber stubber;
for (int i = 0; i < 8; ++i) {
stubber.doReturn(i);
}
stubber.when(mock).getValue();
我的問題是似乎沒有成爲一個公共Stubber
工廠方法。有org.mockito.internal.MockitoCore.stubber()
和new org.mockito.internal.stubbing.StubberImpl()
,但都是內部的,並使用它們感覺不對。
是否有像這樣的編程方式存在更好的模式?有沒有更好的方法來獲得空的Stubber
?
一個解決方案將是when().thenReturn()
,但我從the difference between doReturn() and then()閱讀以來一直避免。
我試過這個間諜對象,它只適用於void方法上的doAnswer,而不適用於非void方法上的doReturn。只是我還是可以證實這一點? – lazlev
@lazlev那麼,我犯了一個愚蠢的錯誤,並且交換了'doReturn'和'doAnswer',所以讓我先解決它。在你提到的錯誤的「doReturn」案例中,你看到了什麼行爲? –
我得到'org.mockito.exceptions.misusing.WrongTypeOfReturnValue: ReturnsElementsOf無法由methodName()'返回。我在發送一個字符串列表,因爲我嘲笑的方法是返回一個字符串。 – lazlev