Mockito Verify常見用法

該系列文章翻譯自https://www.baeldung.com/mockito-series

下面將以MyList類為例進行介紹

public class MyList extends AbstractList<String> {
 
    @Override
    public String get(final int index) {
        return null;
    }
    @Override
    public int size() {
        return 0;
    }
}

Verify常見用法

1. 校驗調(diào)用了某個方法

List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList).size();

2. 校驗調(diào)用某個方法的次數(shù)

List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, times(1)).size();

3. 校驗沒有調(diào)用任何方法

List<String> mockedList = mock(MyList.class);
verifyZeroInteractions(mockedList);

4. 校驗沒有調(diào)用某個方法

List<String> mockedList = mock(MyList.class);
verify(mockedList, times(0)).size();

或者

List<String> mockedList = mock(MyList.class);
mockedList.size();
verify(mockedList, never()).clear();

5. 判斷是否有沒有被校驗的調(diào)用

List<String> mockedList = mock(MyList.class);
//interactions
mockedList.size();
mockedList.clear();
//verification
verify(mockedList).size();
 //following will fail because 'clear()' is unexpected
verifyNoMoreInteractions(mockedList);

6. 校驗調(diào)用的順序

List<String> mockedList = mock(MyList.class);
mockedList.size();
mockedList.add("a parameter");
mockedList.clear();
 
InOrder inOrder = Mockito.inOrder(mockedList);
inOrder.verify(mockedList).size();
inOrder.verify(mockedList).add("a parameter");
inOrder.verify(mockedList).clear();

7. 校驗?zāi)硞€方法至少/至多調(diào)用的次數(shù)

List<String> mockedList = mock(MyList.class);
mockedList.clear();
mockedList.clear();
mockedList.clear();
 
verify(mockedList, atLeast(1)).clear();
verify(mockedList, atMost(10)).clear();

8. 校驗調(diào)用某個方法時使用了特定的參數(shù)

固定參數(shù)

List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add("test");

參數(shù)匹配器

List<String> mockedList = mock(MyList.class);
mockedList.add("test");
verify(mockedList).add(anyString());

9. 使用參數(shù)捕獲器

List<String> mockedList = mock(MyList.class);
mockedList.addAll(Lists.<String> newArrayList("someElement"));
ArgumentCaptor<List> argumentCaptor = ArgumentCaptor.forClass(List.class);
verify(mockedList).addAll(argumentCaptor.capture());
List<String> capturedArgument = argumentCaptor.<List<String>> getValue();
assertThat(capturedArgument, hasItem("someElement"));
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容