Java mockito模拟集
在循环中使用后是否可能进行模拟设置,例如Java mockito模拟集,java,set,mockito,Java,Set,Mockito,在循环中使用后是否可能进行模拟设置,例如 for(String key: mySet) { ...} 谢谢。有几个选项: 投 使用@Mock注释 示例: Set<String> mySet = (Set<String>) mock(Set.class); Set mySet=(Set)mock(Set.class); --或-- @Mock 私有集mySet; @以前 public void doBefore()引发异常{ MockitoAnnotations.in
for(String key: mySet) { ...}
谢谢。有几个选项:
Set<String> mySet = (Set<String>) mock(Set.class);
Set mySet=(Set)mock(Set.class);
--或--
@Mock
私有集mySet;
@以前
public void doBefore()引发异常{
MockitoAnnotations.initMocks(this.getClass());//这将为对象创建mock。。。
}
虽然nicholas的回答非常清楚地解释了如何模拟集合,但我认为你的问题也暗示了你想在循环过程中模拟集合的行为
要实现这一点,您首先需要知道您的代码只是语法糖,并扩展到:
for (Iterator iterator = mySet.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
...
}
(有关详细信息,请参阅Stackoverflow问题)
这表明您需要模拟iterator()
方法。按照nicholas所述设置模拟后,您可以像这样模拟迭代器方法:
when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
@Override
public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
return Arrays.asList("A", "B").iterator();
}
});
when(mySet.iterator()).thenAnswer(new-Answer()){
@凌驾
公共迭代器应答(InvocationMock调用)抛出Throwable{
返回Arrays.asList(“A”、“B”).iterator();
}
});
他询问是否有办法模拟for循环中集合的行为。
when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
@Override
public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
return Arrays.asList("A", "B").iterator();
}
});