2014-11-04 8 views

ответ

4

Попробуйте сделать это:

zone = ActiveSupport::TimeZone.new('Hawaii') 
Time.stub(:now){ Time.new.in_time_zone(zone) } 

Я не уверен, но мне кажется, как гася now и затем вызвать Time.now в блоке вызывает уровень стека слишком глубокую ошибку.

+0

Сладкие, что это было. Я пытался изменить часовой пояс на Delorean.time_travel_to (1.days.ago). Я подумал, что наступит время. Теперь я могу изменить часовой пояс, потому что time_travel_to использует Time.now. Это не сработало после того, как ваше исправление запущено. У вас, кажется, нет идеи с головы? – trueinViso

+0

Прошу прощения, я никогда не использовал Делориан для насмешливого времени в моих спецификациях. Кстати, [Delorean] (https://github.com/bebanjo/delorean) выглядит устаревшим, решили ли вы использовать [Timecop] (https://github.com/travisjeffery/timecop)? – Surya

+0

Да, я работаю над старым проектом. Я пытался избежать использования другого драгоценного камня для одного теста, но мне, вероятно, придется попробовать его. У меня есть один тест, который проваливается после 4:00 вечера. когда тесты выполняются на Семафоре, потому что сервер использует UTC. Это очень раздражает, и я хочу это исправить. – trueinViso

0

Вы можете попробовать что-то вроде этого, если вы хотите следовать за конкретное время, каждый раз, когда в тесте

Time.stub(:now).and_return(Time.mktime(2017,01,23,11,00,00).gmtime)