При написании тестов интеграции, которые зависят от текущей даты/времени, очень удобно иметь возможность freeze
или travel
до определенного момента (например, timecop для рубина)
Есть ли способ добиться чего-то подобного в Elixir/Erlang?
Я пробовал издеваться над встроенными инсталляциями Erlang :os.timestamp
, :erlang.universaltime
с помощью библиотеки meck
, но с ошибкой :cannot_mock_builtin
.
В принципе, я мог бы реализовать свою собственную библиотеку утилиты, чем позволял бы легко высмеивать текущее время, а затем использовать ее везде, а не встроенные методы; однако некоторые библиотеки используют встроенные модули, поэтому это не жизнеспособный вариант (например, Ecto.Model.Timestamps
, генерирующий значения inserted_at
и updated_at
)