我想檢查傳遞給方法的參數......但是檢查必須在第三次調用此方法時完成。Mockito驗證跳過一些電話?
我想答案可能是去:
verify(myMock, times(2)).myMethod(any());
verify(myMock).myMethod(paramIWant);
...但它在第一行失敗:
不過是5倍。不希望調用:
...因爲確實有一個我感興趣的
我想檢查傳遞給方法的參數......但是檢查必須在第三次調用此方法時完成。Mockito驗證跳過一些電話?
我想答案可能是去:
verify(myMock, times(2)).myMethod(any());
verify(myMock).myMethod(paramIWant);
...但它在第一行失敗:
不過是5倍。不希望調用:
...因爲確實有一個我感興趣的
使用參數俘虜爲此後2個電話。您可以在驗證時傳遞捕獲器,然後獲取作爲參數傳遞給此方法的所有值,並檢查您想要的值。
ArgumentCaptor<SomeClass> myCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(myMock,times(5)).myMethod(myCaptor.capture());
List<SomeClass> paramsPassed = myCaptor.getAllValues();
assertEquals(paramIWant, paramsPassed.get(2));
非常感謝。非常活潑,很棒。作爲Mockito的新手,我的大部分活動僅限於使用一個類「Mockito」。但是還有其他幾百個類,我有時會想知道他們在做什麼...例如實現'VerificationMode'的類(即'verify'的第二個參數)。毫無疑問,所有的事情都會隨着時間的推移而變得清晰。 –
PS我***覺得***你錯過了這裏,所以我會嘗試編輯......如果我錯了,道歉。 –
啊,是的,謝謝你發現。我總是忘記那部分。 –
謝謝。我之前使用過ArgumentCaptor。我希望可能有一種快速的方式來做到這一點! –
我不認爲你會發現任何比我的回答更快的東西。當然,如果您感覺如此傾向,您可以使用註釋來創建捕獲器。 –
「但是5次。」是因爲在第一次驗證中使用的'any()'Matcher是貪婪的並且匹配所有的方法調用。它不知道與其他匹配器有其他驗證呼叫。 –