В моем тестовом примере мне нужен метод, чувствительный к времени, в этом методе мы используем java 8 class LocalDate, это не Joda.Как я могу mock java.time.LocalDate.now()
Что я могу сделать, чтобы изменить время, когда я бегу тест
В моем тестовом примере мне нужен метод, чувствительный к времени, в этом методе мы используем java 8 class LocalDate, это не Joda.Как я могу mock java.time.LocalDate.now()
Что я могу сделать, чтобы изменить время, когда я бегу тест
В вашем коде замените LocalDate.now()
с LocalDate.now(clock);
.
Затем вы можете передать Clock.systemDefaultZone()
для производства и a fixed clock для тестирования.
Возможно, вы также захотите передать фиксированные часы на производстве (значение которых зафиксировано в начале транзакции), чтобы избежать использования непоследовательных «сейчас» в разных сущностях и запросах. Для получения более подробной информации см. this question.
Вы можете реорганизовать свой код, чтобы сделать его удобным для тестирования, например, заменить все вызовы LocalDate.now()
с вызовом некоторого метода пользовательского макетируемого нестатического класса.
В качестве альтернативы вы можете использовать PowerMock's mockStatic.
Это должен быть принятый ответ! – GedankenNebel