2013-06-13 11 views
12

Chciałbym móc dla Mockito wykonać wykonać akcję niestandardową, gdy dana metoda void jest nazywana.Wykonywanie akcji niestandardowej, gdy dana metoda wyszydzania nazywa się

Say mam następujący kod:

@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); 
    } 
} 

że chcę dodać instancję profil do listy profili. Czy Mockito może to zrobić? Jeśli tak to jak?

Odpowiedz

19

Użyj Mockito.doAnswer.

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

Czy mogę uzyskać więcej szczegółów na temat tej odpowiedzi? OP poprosił o dodanie Profilu do 'profili', ale powyższy kod nie wspomina ani ... a sama lista" profili "wydaje się być poza zakresem wewnętrznej klasy - a powiązana dokumentacja wydaje się być bardziej skoncentrowana na manipulowaniu mockami niż na wywoływanie dowolnego niezmodyfikowanego kodu. –

+0

https://stackoverflow.com/a/12088675/2112722 ma więcej szczegółów ... –

Powiązane problemy