Есть ли простой способ заглушить time.Now () глобально в golang во время теста?

Часть нашего кода чувствительна ко времени, и нам нужно иметь возможность зарезервировать что-то, а затем выпустить это за 30-60 секунд и т. Д., Что мы можем просто сделатьtime.Sleep(60 * time.Second)

Я только что реализовал интерфейс времени и во время теста использую заглушенную реализацию интерфейса времени, подобнуюэто обсуждение орешек.

Тем не мение,time.Now() вызывается на нескольких сайтах, что означает, что нам нужно передать переменную, чтобы отслеживать, сколько времени мы на самом деле спали.

Мне было интересно, если есть альтернативный способ заглушитьtime.Now() во всем мире. Может быть, сделать системный вызов, чтобы изменить системные часы?

Может быть, мы можем написать наш собственный пакет времени, который в основном оборачивает пакет времени, но позволяет нам его менять?

Наша текущая реализация работает хорошо, я начинающий, и мне любопытно посмотреть, есть ли у кого-нибудь другие идеи?

Ответы на вопрос(5)

Ваш ответ на вопрос