婚纱摄影网站报价,软件开发合同协议,网站开发 程序开发阶段,专业建站分销商城mock方法时#xff0c;总会因场景不同#xff0c;调整参数的匹配情况。比如#xff1a;某个参数是为了在数据库进行模糊查询的#xff1b;或则精确匹配时#xff0c;引用类型参数未实现equals方法。这时候就需要mock方法时#xff0c;进行不同匹配。
1. 参数精确匹配 Ma…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.argThatArgumentMatcher T // 3.自定义匹配。 eg定义只匹配PageParam的pageNo属性PageParam pageParam PageParam.create(1, 20);ArgumentMatcherPageParam 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