Poniższy kod:Jak wykonać makietę Mockito, wykonać kolejno różne akcje?
ObjectMapper mapper = Mockito.mock(ObjectMapper.class);
Mockito.doThrow(new IOException()).when(mapper).writeValue((OutputStream) Matchers.anyObject(), Matchers.anyObject());
Mockito.doNothing().when(mapper).writeValue((OutputStream) Matchers.anyObject(), Matchers.anyObject());
try {
mapper.writeValue(new ByteArrayOutputStream(), new Object());
} catch (Exception e) {
System.out.println("EXCEPTION");
}
try {
mapper.writeValue(new ByteArrayOutputStream(), new Object());
} catch (Exception e) {
System.out.println("EXCEPTION");
}
Oczekiwany wynik jest
WYJĄTEK
prawda?
Ale mam nic
Gdybym wtedy dokonać doThrow po DoNothing uzyskać
WYJĄTEK
WYJĄTEK
więc wygląda na to, że jest to ostatni mock to ten, który jest brany ... Myślałem, że to będzie wymagało drwin w kolejności, w jakiej są zarejestrowane?
szukam produkować makiety rzuca po raz pierwszy wyjątek i kończy zazwyczaj po raz drugi ...
Nie zdawałem sobie sprawy, że muszę je powiązać ... ;-) –