У меня есть метод, который использует DateTime.now для выполнения поиска по некоторым данным, я хочу протестировать метод с различными датами, но я не знаю, как заглушить DateTime.now и не могу заставить его работать с Timecop ( если он даже работает так).
Со временем я попробовал
it 'has the correct amount if falls in the previous month' do
t = "25 May".to_datetime
Timecop.travel(t)
puts DateTime.now
expect(@employee.monthly_sales).to eq 150
end
когда я запускаю спецификацию, я вижу, что putt DateTime.now дает 2015-05-25T01:00:00+01:00
, но с тем же самым puts DateTime.now в рамках метода, который я тестировал выходы 2015-07-24T08:57:53+01:00
(сегодняшняя дата).
Как я могу это сделать?
------------------ обновление ---------------------------- -----------------------
Я создавал записи (@employee и т.д.) в блоке before(:all)
, который, похоже, вызвал проблему. Он работает только тогда, когда настройка выполняется после блока Timecop do
. Почему это так?