2012-08-12 91 views
4

我使用RSpec和rspec-rails 2.10进行测试。如何设置RSpec时区?

我已经在environment.rb中将Rails时区设置为UTC,但RSpec时区成为我的本地时区,东京。

我已经写了Time.zone setteing在environments/test.rb和spec_helper.rb但没有修复。

如何设置RSpec时区?

+0

'Time.zone'使用ActiveSupport :: TimeWithZone,这是在Rails中设置时区的正确方法。你确定你在RSpec中使用ActiveSupport :: TimeWithZone类吗?有关正确的用法,请参阅此[文档](http://jsfiddle.net/ARf9M/1/)。 – 2012-08-12 11:17:15

+0

您能否发表一个代码? “RSpec时区”有点含糊不清。 – 2012-08-12 14:18:20

+0

@TanzeebKhalili,你发布的链接是一个高脚的JavaScript小提琴,与Rspec,Timezones或ActiveSupport无关。 – gardenofwine 2013-07-24 06:50:43

回答

0

问题是另一点。 我写了一个调整时区偏移的方法,该方法改变了Rails时区。 这是代码。

class WeeklyEvent < ActiveRecord::Base 
    def adjust_time_zone_offset 
     Time.zone = timezone # => This is the problem. Rails Time.zone changes to timezone. 
     time_zone_offset = Time.zone.utc_offset # => 32400 JST offset 9 hours in seconds. 
     self.start_date_time = (start_date_time - time_zone_offset).in_time_zone('UTC') 
    end 
end 

japanese_event = WeeklyEvent.find(1) 
p japanese_event.start_date_time #=> Sun, 01 Jan 2012 09:00:00 JST +09:00 
-1

使用Time.zone.now而不是Time.now

+4

问题是关于如何更改时区 – pungoyal 2013-06-12 05:36:16