È possibile impostare la simulazione in modo che dopo l'uso nel ciclo, ad es.Java mockito mock set
for(String key: mySet) { ...}
Grazie.
È possibile impostare la simulazione in modo che dopo l'uso nel ciclo, ad es.Java mockito mock set
for(String key: mySet) { ...}
Grazie.
C'è un paio di opzioni:
Esempi:
Set<String> mySet = (Set<String>) mock(Set.class);
--ovvero--
@Mock
private Set<String> mySet;
@Before
public void doBefore() throws Exception {
MockitoAnnotations.initMocks(this.getClass()); //this should create mocks for your objects...
}
Mentre nella risposta di nicholas è perfettamente chiaro spiegare come si prende in giro un Set, penso che la tua domanda implichi anche che si voglia prendere in giro il comportamento del set durante il loop.
per raggiungere questo è necessario prima sapere che il codice è solo zucchero sintattico e si espande a:
for (Iterator iterator = mySet.iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
...
}
(Per i dettagli sulla che vedere la domanda StackOverflow Which is more efficient, a for-each loop, or an iterator?)
Ciò rende chiaro che si bisogno di prendere in giro il metodo iterator()
. Dopo aver impostato la simulazione come descritto da Nikolas, prendi in giro il metodo iteratore in questo modo:
when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
@Override
public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
return Arrays.asList("A", "B").iterator();
}
});
Erm ... Che stai dicendo ?! – berry120
Chiede se c'è un modo per deridere il comportamento di un set in un ciclo for. – Nicolas