15

Rails 3アプリケーションでタイムゾーンを使用できるように取り組んでいます。私の開発マシンは EDT で、ホストしているサーバーは UTC です。自分のコンピューターのシステム クロックを変更せずに同じシステム タイム ゾーンを使用してテストを実行できるように、rspec テストで ruby​​ が使用しているシステム タイム ゾーンを変更する方法はありますか? Delorean と Timecop を調べましたが、探しているものではありません。私は次のようなものを探しています

Time.system_time_zone = "UTC"

...そして、 Time.now は、システムのタイムゾーンが設定されているものではなく、UTC 時間を返します。

4

2 に答える 2

13
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
于 2013-04-12T15:01:40.330 に答える
-1

Rails は、探しているものを正確に提供します。

Time.zone = "UTC"

詳細については、http://api.rubyonrails.org/classes/Time.html#method-c-zone-3Dを参照してください。

于 2013-04-12T14:59:19.677 に答える