Mockito—参数匹配

mock方法时,总会因场景不同,调整参数的匹配情况。比如:某个参数是为了在数据库进行模糊查询的;或则精确匹配时,引用类型参数未实现equals方法。这时候就需要mock方法时,进行不同匹配。

1. 参数精确匹配

    Map mockMap = Mockito.mockMap.class);// 1.精确匹配Mockito.whenmockMap.get11)).thenReturn111); // 基础类型Mockito.whenmockMap.getLists.newArrayList"袁紫霞"))).thenReturn"白玉京"); // 引用类型TestCase.assertEquals111, mockMap.get11));TestCase.assertEquals"白玉京", mockMap.getLists.newArrayList"袁紫霞")));

2. 参数模糊匹配

    //多个参数,其中一个定义了匹配规则Matcher),其他的全要MatcherMockito.whenmockMap.getMockito.endsWith"天"))).thenReturn"龙傲天"); // 字符串。eg:以天结尾的Mockito.whenmockMap.getMockito.anyLong))).thenReturn999L); // 基础类型. eg:任何long类型Mockito.whenmockMap.getMockito.anyUser.class))).thenReturnnew User)); // 引用类型TestCase.assertEquals"龙傲天", mockMap.get"星期天"));TestCase.assertEquals999L, mockMap.get1L));TestCase.assertEqualsnew User), mockMap.getnew User)));

3. 参数自定义匹配

Mockito.argThat(ArgumentMatcher< T>):

    // 3.自定义匹配。 eg:定义只匹配PageParam的pageNo属性PageParam pageParam = PageParam.create1, 20);ArgumentMatcher<PageParam> argPage = page) -> page.getPageNo) == pageParam.getPageNo);Mockito.whenmockMap.getMockito.argThatargPage))).thenReturnLists.newArrayList"袁紫霞", "白玉京"));TestCase.assertEqualsLists.newArrayList"袁紫霞", "白玉京"), mockMap.getPageParam.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
 

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注