Подтвердить что ты не робот

Установка времени системы в тестах rspec без изменения системных часов

Я работаю над тем, чтобы приложение rails 3 готово использовать часовые пояса. Моя машина разработки находится в EDT, а серверы, на которых я размещаюсь, находятся в UTC. Есть ли способ в моих тестах rspec, чтобы изменить системный часовой пояс, используемый рубином, чтобы я запускал тесты с использованием одного и того же системного часового пояса, не меняя системные часы на моем компьютере? Я посмотрел на Делорейна и Timecop, и они не то, что я ищу. Я ищу что-то вроде

Time.system_time_zone = "UTC"

... и затем Time.now вернет время UTC вместо того, что установлено в моем системном часовом поясе.

4b9b3361

Ответ 1

before {Time.stub(:now) {Time.now.utc}}

При этом в ваших тестах вызывается где-нибудь Time.now, он вернет ваше системное время в UTC.

Пример:

describe Time do
  before {Time.stub(:now) {Time.now.utc}}

  it "returns utc as my system time" do
    Time.now.utc?.should be_true
  end
end