我正在准备一个rails 3应用程序来使用时区。我的开发机器在edt中,我托管的服务器在utc中。在我的rspec测试中,有没有一种方法可以更改ruby使用的系统时区,这样我就可以使用相同的系统时区运行测试,而不必更改计算机上的系统时钟?我调查过德洛林和时间警察,他们不是我要找的。我在找类似的东西

Time.system_time_zone = "UTC"

…然后是时间。现在将返回UTC时间,而不是系统时区设置的值。

最佳答案

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's time" do
    Time.now.utc?.should be_true
  end
end

08-27 18:35
查看更多