在一次rspec测试中设置时区

时间:2014-11-04 17:56:11

标签: ruby-on-rails ruby-on-rails-3 rspec

我试图以这种方式在一个rspec测试上设置时区:

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

这给了我一个堆栈级别太深的错误,我在这里缺少什么?

2 个答案:

答案 0 :(得分:7)

尝试这样做:

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

我不确定,但看起来像是now,然后在块中调用Time.now会导致堆栈级别太深错误。

答案 1 :(得分:0)

如果您希望每次在测试中遵循特定时间,可以尝试这样的事情

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