2013-06-13 2 views
12

Mi piacerebbe che Mockito esegua un'azione personalizzata su quando un determinato metodo di annullamento è chiamato.Esecuzione di un'azione personalizzata quando viene chiamato un metodo di vuoto fittizio dato

Dire che ho il seguente codice:

@Autowired 
private ProfileService profileService; 

@Autowired 
private ProfileDao profileDao; 

private List<Profile> profiles; 

@Before 
public void setup() { 
    Mockito.when(profileDao.findAll()).thenReturn(profiles); 
    Mockito.when(profileDao.persist(any(Profile.class))).thenAddProfileToAboveList... 
} 

@Configuration 
public static class testConfiguration { 
    @Bean 
    public ProfileDao ProfileDao() { 
     return mock(ProfileDao.class); 
    } 
} 

dire che voglio aggiungere un'istanza profilo alla lista dei profili. Mockito può farlo? Se é cosi, come?

risposta

19

Utilizzare Mockito.doAnswer.

doAnswer(new Answer() { 
    public Object answer(InvocationOnMock invocation) { 
     // make the changes you need here 
    }}) 
.when(mock).someMethod(); 
+0

Posso ottenere maggiori dettagli su questa risposta? OP ha chiesto di aggiungere un profilo a 'profiles', ma il codice sopra non menziona nè ... e la lista' profiles' stessa sembra essere al di fuori dell'ambito della classe interna - e la documentazione collegata sembra essere più focalizzata sulla manipolazione di mock piuttosto che chiamando codice arbitrario non bloccato. –

+0

https://stackoverflow.com/a/12088675/2112722 ha più dettagli ... –