Comment puis-je me moquer de java.time.LocalDate.now ()

Dans mon cas de test, j’ai besoin d’une méthode sensible au temps de test. Dans cette méthode, nous utilisons java 8 class LocalDate, ce n’est pas Joda .

Que puis-je faire pour changer le temps, quand j’exécute le test

Dans votre code, remplacez LocalDate.now() par LocalDate.now(clock); .

Vous pouvez ensuite passer Clock.systemDefaultZone() pour la production et une horloge fixe pour les tests.

Vous pouvez refactoriser votre code pour le rendre convivial, par exemple, remplacer tous les invocations de LocalDate.now() par l’appel d’une méthode de classe non statique mockable personnalisée.

Alternativement, vous pouvez utiliser le mockStatic de PowerMock .

Vous pouvez également souhaiter passer une horloge fixe en production (dont la valeur est fixée au début d’une transaction) pour éviter l’utilisation incohérente “maintenant” dans différentes entités et demandes. Voir cette question pour plus de détails.