Es posible un simulacro de modo que después de su uso en el ciclo, p.Java mockito mock set
for(String key: mySet) { ...}
Thanks.
Es posible un simulacro de modo que después de su uso en el ciclo, p.Java mockito mock set
for(String key: mySet) { ...}
Thanks.
Hay un par de opciones:
Ejemplos:
Set<String> mySet = (Set<String>) mock(Set.class);
O bien,
@Mock
private Set<String> mySet;
@Before
public void doBefore() throws Exception {
MockitoAnnotations.initMocks(this.getClass()); //this should create mocks for your objects...
}
Si bien la respuesta de Nicholas es perfectamente clara al explicar cómo se burla de un conjunto, creo que su pregunta también implica que desea simular el comportamiento del conjunto durante el ciclo.
Para lograr que primero tiene que saber que su código es sólo el azúcar sintáctica y se expande a:
for (Iterator iterator = mySet.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
...
}
(Para más detalles acerca de que ver la cuestión Stackoverflow Which is more efficient, a for-each loop, or an iterator?)
Esto deja claro que se necesita burlarse del método iterator()
. Después de configurar el simulacro como lo describe nicholas, se burla del método del iterador como este:
when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
@Override
public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
return Arrays.asList("A", "B").iterator();
}
});
Erm ... ¿Qué estás diciendo? – berry120
Pregunta si hay una forma de simular el comportamiento de un conjunto en un ciclo for. – Nicolas