2013-04-04 16 views
6

Ho codice che assomiglia così:Come prendere in giro il valore restituito da una mappa?

for (Map.Entry<Integer, Action> entry : availableActions.entrySet()) { 
    ... 
} 

Ho cercato di deridere in questo modo:

Map mockAvailableActions = mock(Map.class, Mockito.RETURNS_DEEP_STUBS); 
mockAvailableActions.put(new Integer(1), mockAction); 

penserei che sarebbe sufficiente. Ma entrySet è vuoto. Quindi ho aggiunto:

when(mockAvailableActions.entrySet().iterator()).thenReturn(mockIterator); 
when(mockIterator.next()).thenReturn(mockAction); 

Still entry Il set è vuoto. Che cosa sto facendo di sbagliato? Grazie per qualsiasi input!

risposta

11

Forse mi manca qualcosa, ma perché non solo fare questo:

Map.Entry<Integer, Action> entrySet = <whatever you want it to return> 
Map mockAvailableActions = mock(Map.class); 
when(mockAvailableActions.entrySet()).thenReturn(entrySet); 

Considera anche se effettivamente bisogno di un finto Map a tutti, non sarebbe un vero e proprio fare il lavoro? I mazzi sono solitamente usati per sostituire altri pezzi del tuo codice che non vuoi essere coinvolto nel tuo test unitario, una mappa fa parte del linguaggio Java principale e di solito non viene deriso.

+0

Sì, questo è stato il mio primo pensiero. Ma come sarebbe "Map.Entry entrySet ="? L'inserimento non può essere istanziato, quindi dovrei definire la variabile? – user1660256

+0

http://stackoverflow.com/questions/3110547/java-how-to-create-new-entry-key-value –

+1

Avevi ragione Codebox - questa risposta non era di prendere in giro la mappa. – user1660256

Problemi correlati