Code: Select all
@Test
public void testCheckCreatedBeforeDate() throws Exception {
PowerMockito.mockStatic(ServiceInfo.class);
ServiceInfo mockServiceInfo = mock(ServiceInfo.class);
when(ServiceInfo.getInstance(anyString())).thenReturn(mockServiceInfo);
when(mockServiceInfo.getCreationDate()).thenReturn(new Date()); // Issue happens here
assertEquals(Boolean.TRUE, myUtils.isCreatedBeforeDate(anyString()));
}
< /code>
und die Methode, die getestet wird: < /p>
public Boolean isCreatedBeforeDate(String serviceId) {
try {
ServiceInfo serviceInfo = ServiceInfo.getInstance(serviceId);
LocalDate creationDate = serviceInfo.getCreationDate().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
return creationDate.isBefore(LAUNCH_DATE);
} catch (SQLException e) {
throw new RuntimeException("Error checking creation date", e);
}
}
Code: Select all
PowerMockito.when(mockServiceInfo.getCreationDate()).thenReturn(new Date());
Code: Select all
PowerMockito.doReturn(new Date()).when(mockServiceInfo).getCreationDate();
Code: Select all
when(mockServiceInfo.getCreationDate()).thenReturn(new Date());
Code: Select all
mockingDetails(mockServiceInfo).isMock()
Code: Select all
mockingDetails(mockServiceInfo).isMock()
Fragen : < BR/>
[*] Warum ist MockServiceInfo.getCreationDate () Null oder einen Stackoverflowerror ?
zurückgebracht < /li>
Gibt es einen Konflikt zwischen statischer und Instanzverspottung? Verspotten Sie dieses Verhalten?
Verwenden von Doreturn (neuer Datum ()). Wenn (MockServiceInfo) .GetCreationDate (); < /code> < /p>
< /li>
Überprüfen Sie, ob MockServiceInfo ein ordnungsgemäßes Mock
[*] ist, um Mockstatic (serviceInfo.class) wird vor dem Verspottungs -Instanzmethoden durchgeführt
[/u]