gpt4 book ai didi

ruby-on-rails - Rails 时间格式化测试失败是因为它休息了一小时?

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:39 25 4
gpt4 key购买 nike

我的一个 Rails 类中有以下方法:

def human_departure_time
"#{departure_time.strftime("%A, %d %B %Y")} at #{departure_time.strftime("%I:%M %p")}"
end

如您所见,它只需要模型的 datetime 属性并对其进行格式化,使其更加人性化。

无论如何,我对这个方法有如下测试:

describe "human_departure_time" do
it "should output the time in readable format" do
# first I use the Timecop gem to freeze the time
Timecop.freeze(DateTime.now) do
bus_time = DateTime.now + 1.days
# factory a bus with a specific departure time
bus = Factory :bus, departure_time: bus_time
expected = "#{bus_time.strftime("%A, %d %B %Y")} at #{bus_time.strftime("%I:%M %p")}"
# check that the output is as expected
bus.human_departure_time.should == expected
end
end
end

非常简单,但测试失败一小时,输出如下:

Failures:

1) Bus human_departure_time should output the time in readable format
Failure/Error: bus.human_departure_time.should == expected
expected: "Wednesday, 17 August 2011 at 03:13 AM"
got: "Wednesday, 17 August 2011 at 02:13 AM" (using ==)
# ./spec/models/bus_spec.rb:34:in `block (4 levels) in <top (required)>'
# ./spec/models/bus_spec.rb:30:in `block (3 levels) in <top (required)>'

这是我的巴士工厂,以防万一。在我的测试中,我用卡住时间加上一小时覆盖了出发时间。

factory :bus do
origin_name "Drogheda"
event_name "EP"
departure_time { DateTime.now + 14.days }
end

我认为这与夏令时有关?我该如何解决这个问题?

最佳答案

ActiveRecord 可以自动将模型中的时间属性转换为本地时间。

您可以尝试使用 strftime%Z 参数来查看输出时间戳的时区,以查看可能的转换是在什么时候潜入您的时间。

一些可能相关的 Google 提示:


默认时区:

http://apidock.com/rails/ActiveRecord/Base/default_timezone/class


ActiveRecord::Base.time_zone_aware_attributes
config.active_record.time_zone_aware_attributes:

http://tamersalama.com/2011/01/10/rails-disable-timezone-conversions/
https://mirrors.kilnhg.com/Repo/Mirrors/From-Git/Rails/History/70cb470c1ab8
http://www.ruby-forum.com/topic/2096919
http://www.ruby-forum.com/topic/890711


关于ruby-on-rails - Rails 时间格式化测试失败是因为它休息了一小时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7073006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com