before + after → around
Часто встречаю в тестах такое:
before do
Timecop.freeze(Time.zone.local(2022, 4, 21))
end
after do
Timecop.return
end
Или с ActiveSupport::Testing::TimeHelpers:
before do
travel_to(Time.zone.local(2022, 4, 21))
end
after do
travel_back
end
Такие конструкции из before с «заморозкой» времени и after с возвратом лучше упрощать с помощью around:
around do |example|
Timecop.freeze(now) { example.run }
# или
travel_to(now) { example.run }
end
P. S. Ещё больше постов о программировании, тестах и культуре разработки у меня в Телеграме.