使用 Mockito 测试 Java 增强的行为
2022-09-03 09:37:17
我想测试一个Java方法,该方法具有增强的Mockito。问题是,当我不知道如何设定对增强工作的期望时。以下代码来自 mockito google 组中的一个未解答的问题:
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertTrue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.mockito.Mockito;
import org.testng.annotations.Test;
public class ListTest
{
@Test
public void test()
{
List<String> mockList = Mockito.mock(List.class);
Iterator<String> mockIterator = Mockito.mock(Iterator.class);
when(mockList.iterator()).thenReturn(mockIter);
when(mockIter.hasNext()).thenReturn(true).thenReturn(false);
when(mockIter.next()).thenReturn("A");
boolean flag = false;
for(String s : mockList) {
flag = true;
}
assertTrue(flag);
}
}
for 循环中的代码永远不会被执行。为迭代器设置期望不起作用,因为 java 增强的 在内部不使用列表迭代器。设置对方法的期望也没有,因为增强的实现似乎也不会调用列表的方法。List.get()
get()
任何帮助将不胜感激。