Каков наилучший способ написания модульного теста для кода, который получает текущее время? Например, некоторые объекты могут быть созданы только в рабочие дни, другие объекты учитывают текущее время при проверке разрешений на выполнение некоторых действий и т. Д.
Полагаю, мне стоит смоделировать Date.today и Time.now. Это правильный подход?
Обновление: оба решения (a) Time.is и (b) Time.stubs (: сейчас) .returns (t) работают. (а) очень хороший подход, но (б) решение будет более согласованным с другим тестовым кодом.
На этот вопрос автор просит общего решения. Для Ruby, в моем варианте два вышеупомянутых решения проще и поэтому лучше, чем извлечение кода, который получает текущую дату / время
Кстати, я рекомендую использовать Хронический , чтобы получить необходимое время, например.
require 'Chronic'
mon = Chronic.parse("next week monday")
Time.stubs(:now).returns(mon)