mockito5.4.0单元测试(7) --预先mock返回对象

发布时间 2023-06-21 11:01:20作者: 梦幻朵颜

mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#30 

【case 1】 

LinkedList mockedList = mock(LinkedList.class);
mockedList.add("这个字符大于5");

// get任何Int对象都返回"element"
when(mockedList.get(anyInt())).thenReturn("element");

//只要符合argThat里的表达式,那么调用contains方法都返回true
when(mockedList.contains(eq("123456"))).thenReturn(true);                      // 使用框架已封装好的eq
when(mockedList.contains(anyInt())).thenReturn(true);                          // 使用框架已封装好的anyInt()
when(mockedList.contains(argThat(arg -> "aa".equals(arg)))).thenReturn(true);  // 自定义实现逻辑:"aa".equals(arg)

// 以下这一行会打印:"element"
System.out.println(mockedList.get(999));

// 校验上面的代码中是否调用过get int的方法
verify(mockedList).get(anyInt());

boolean contains1 = mockedList.contains("23");  // 这里不符合上面argThat的表达式,所以会返回false
boolean contains2 = mockedList.contains("aa");  // 这里符合上面argThat的表达式,所以会返回true

log.info("contains1 = {}, contains2 = {}", contains1, contains2);  // contains1 = false, contains2 = true

// 判断list里是否包含大于5位长度的对象
verify(mockedList).add(argThat(someString -> someString.toString().length() > 5));

end.