Wie kann ich verspotte java.Zeit.LocalDate.jetzt()
In meinem test-Fall brauche ich die test-Zeit empfindliche Methode, die in dieser Methode verwenden wir java 8 Klasse LocalDate, es ist nicht Joda.
Was kann ich tun, um die Zeit ändern, wenn ich laufen gehe-test
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersetzen Sie In Ihrem code
LocalDate.now()
mitLocalDate.jetzt(Uhr);
.Ihnen dann passieren kann
Clock.systemDefaultZone()
für die Produktion und einen festen Takt für die Prüfung.Dies ist ein Beispiel :
Ersten, injizieren den
Clock
. Wenn Sie mit spring boot nur ein :Zweite, rufen Sie
LocalDate.now(clock)
im code :Nun, in Ihrem unit-test-Klasse :
}
Können Sie überarbeiten Sie den code, um es testen-freundlich, ersetzen Sie beispielsweise alle Aufrufe von
LocalDate.now()
unter Berufung auf eine Methode, mit der benutzerdefinierte mockable nicht-statische Klasse.Alternativ können Sie PowerMock ist mockStatic.
Vielleicht wollen Sie auch zu pass einen festen Takt in der Produktion (der Wert ist fest auf den Beginn einer Transaktion) zu vermeiden, mit inkonsistenten "jetzt" in verschiedenen Entitäten und Anfragen.
Sehen diese Frage für details.
Wenn wir brauchen, um mock-statische Methoden wie jetzt() können wir mehrere alternativen, wie PowerMock:
Oder JMockit, in der Tat mit JMockit können wir die MockUp-Klasse:
Oder die Erwartungen, Klasse:
Finden wir weitere Beispiele hier.
Andere einfache alternative ist die Verwendung der jetzt() - Methode mit einem festen Takt Instanz. Sicherlich, die meisten von den Klassen in java.Zeit Paket haben jetzt () - Methode mit dem Clock-parameter: