Chcialbym przetestowac taka metode z klasy B, uzywajac mockito (nie powermocka ;P)
public void assure() {
logger.info("1");
Map<String, String> map = getSTHMap();
ws = map.get("ws");
cN = map.get("cN");
cP = map.get("cP");
logger.info("2");
Sth s = createCws();
prepareRequest();
sav();
}
Moj biezacy test:
@Test
public void testAssure() {
doReturn(generatePM()).when(b).getSTHMap(); //generatePM zwraca przygotowana spoecjhalnie mape do testow
doReturn(null).when(b).createCws();
doNothing().when(b).prepareRequest();
b.assureFresh();
verify(b, times(1)).getSTHMap();
verify(b, times(1)).createCws();
verify(b, times(1)).prepareRequest();
verify(b, times(1)).sav();
assertEquals("wsTest", b.getws());
assertEquals("cNTest", b.getcN());
assertEquals("cPTest", b.getcP());
}
Metody createCws i prepareRequest musialem zrobic pakietowe (aby byly widoczne), da sie jakos te warunki 'when coś tam' zrobic bez zmieniania dostepu (private) ?
Klase B b zastabowalem uzywajac spy, dlatego, ze testuje metode assure (ktora jest metoda publiczna klasy B) i metoda assure wywoluje w sobie kilka metod prywatnych z klasy B.
Da sie jakos przetestowac podwojne wywolanie loggera?
Co sadzicie o tym tescie ? Czy da sie lepiej przetestowac ta metode nie robiac w niej jakiegos wielkiego refactoringu ?