Mockito—参数匹配
生活随笔
收集整理的這篇文章主要介紹了
Mockito—参数匹配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
mock方法時,總會因場景不同,調整參數的匹配情況。比如:某個參數是為了在數據庫進行模糊查詢的;或則精確匹配時,引用類型參數未實現equals方法。這時候就需要mock方法時,進行不同匹配。
1.?參數精確匹配
Map mockMap = Mockito.mock(Map.class);// 1.精確匹配Mockito.when(mockMap.get(11)).thenReturn(111); // 基礎類型Mockito.when(mockMap.get(Lists.newArrayList("袁紫霞"))).thenReturn("白玉京"); // 引用類型TestCase.assertEquals(111, mockMap.get(11));TestCase.assertEquals("白玉京", mockMap.get(Lists.newArrayList("袁紫霞")));2. 參數模糊匹配
//多個參數,其中一個定義了匹配規則(Matcher),其他的全要MatcherMockito.when(mockMap.get(Mockito.endsWith("天"))).thenReturn("龍傲天"); // 字符串。eg:以天結尾的Mockito.when(mockMap.get(Mockito.anyLong())).thenReturn(999L); // 基礎類型. eg:任何long類型Mockito.when(mockMap.get(Mockito.any(User.class))).thenReturn(new User()); // 引用類型TestCase.assertEquals("龍傲天", mockMap.get("星期天"));TestCase.assertEquals(999L, mockMap.get(1L));TestCase.assertEquals(new User(), mockMap.get(new User()));3. 參數自定義匹配
Mockito.argThat(ArgumentMatcher< T>):
// 3.自定義匹配。 eg:定義只匹配PageParam的pageNo屬性PageParam pageParam = PageParam.create(1, 20);ArgumentMatcher<PageParam> argPage = (page) -> page.getPageNo() == pageParam.getPageNo();Mockito.when(mockMap.get(Mockito.argThat(argPage))).thenReturn(Lists.newArrayList("袁紫霞", "白玉京"));TestCase.assertEquals(Lists.newArrayList("袁紫霞", "白玉京"), mockMap.get(PageParam.create()));4. 參考資料
mockito文檔:https://www.javadoc.io/doc/org.mockito/mockito-core/3.0.0/index.html
ArgumentMatcher參數文檔:https://www.javadoc.io/doc/org.mockito/mockito-core/3.0.0/org/mockito/ArgumentMatcher.html
?
總結
以上是生活随笔為你收集整理的Mockito—参数匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Boost简介
- 下一篇: Awesome Mac:收集的非常全面好