Найти тему
Golang-news

Как работать с датами в тестах

Работа с датами в любом языке программирования представляет некоторые сложности. В этом посте я покажу, как работать с датами при написании модульных тестов для приложения на Go.

Давайте рассмотрим пример:

Один из способов написать модульный тест для этого кода может быть:

-2

Еще один способ решения этой проблемы - создание абстракции для пакета времени. Для этого мы создадим новый пакет под названием clock, внутри которого добавим файл clock.go:

-3

Следующим шагом будет рефакторинг функции, которая будет использовать новый пакет.

-4

Так как функция canIEat получает интерфейс clock.Clock, мы можем в нашем тесте использовать новую реализацию этого интерфейса:

-5

Таким образом, мы лучше контролируем то, что мы используем в тесте, и повышаем производительность, потому что больше не нужно выполнять вычисления даты, такие как time.Now().AddDate(0, 0, 1) в первом примере. То, что я здесь делаю, это простой совет, но он показывает, насколько мощным и легким в использовании является концепт интерфейсов в Go.