Ich versuche, eine Klasse mit LocalDateTime
Objekte in einer Methode zu verspotten. die Klasse Mocking verursacht ein:Mocking LocalDateTime mit PowerMockito
java.lang.IllegalStateException Grund: [source error] toInstant (java.time.ZoneOffset) in java.time.LocalDateTime nicht gefunden
ich gefunden habe, this damit verbundene Frage (die Klasse final) - und versuchte so in dem Testaufbau zu tun:
PowerMockito.mockStatic(LocalDateTime.class);
Aber ich immer noch die gleichen Fehler. Ein nicht funktionierende Testaufbau ist:
@Before
public void setUp() {
PowerMockito.mockStatic(LocalDateTime.class);
LocalDateTime ld = LocalDateTime.now();
Instant now = Instant.now();
now.atOffset(ZoneOffset.UTC);
PowerMockito.when(LocalDateTime.toInstant(any(ZoneOffset.class))).thenReturn(now); // <= fails with above exception
}
Wie kann ich verspotten richtig LocalDateTime
Klasse, so dass Mockito die Methode toInstant
anrufen kann?
Ich stimme den beiden Punkten in der Antwort zu, die Sie verlinkt haben: Sie müssen @PrepareForTest die Klasse, die mit 'LocalDateTime' interagiert, im Idealfall umgestalten, so dass Sie diese Klassen nicht vortäuschen müssen - besonders weil Java Time so schön ist können Sie Clock-Instanzen zum Testen erstellen. Schließen als Dupe; Zumindest bitte bearbeiten Sie in Ihrem @PrepareForTest, warum diese Antwort nicht ausreicht. –