Cześć, jak przetestować poniższy kod?
@Service
public class Premia {
public double oblicz(double baza) {
double retn = 0d;
ZonedDateTime zdt = ZonedDateTime.now();
if (zdt.getMonth() == Month.FEBRUARY) {
retn = 3d;
} else {
retn = 1.1d;
}
return retn * baza;
}
}
Założenia: Nie można modyfikować kodu oraz pomijamy, że został użyty typ double.
Próbowałem z PowerMock oraz szukałem rozwiązań, ale nic mogę nic znaleźć :(
Test, który próbowałem skleić ....
@SpringBootTest()
@PrepareForTest({ZonedDateTime.class})
class Demo2ApplicationTests {
@Autowired
Premia premia;
@Test
void mocking() throws Exception {
PowerMockito.mockStatic(ZonedDateTime.class);
ZonedDateTime zdt = ZonedDateTime.of(2020,2,2,2,2,2,2,ZoneId.of("+1"));
PowerMockito.when(ZonedDateTime.now()).thenReturn(zdt);
Assertions.assertThat(premia.oblicz(1200)).isEqualTo(3600);
}
}
W jaki sposób mokujecie wewnętrzne zmienne?
Z góry dzięki za pomoc
99xmarcin