ruby 如何在本地重现CI上的测试套件中发生的时区问题?

rsaldnfx  于 2022-11-04  发布在  Ruby
关注(0)|答案(1)|浏览(101)

我正在使用的Ruby on Rails测试套件中的一些测试在CI(团队使用CircleCI)上总是在东部时间晚上8点(对应于UTC午夜)之后失败。
我无法在我的计算机上重现此问题,因为我的计算机处于CET时区(因此问题发生在当地时间凌晨2点之后)。

  • CI机器被设置为在任何地方都使用UTC,但我认为框架中有一个层覆盖了这一点,并设置了不同的时区。
  • 我试着将Mac的时间和时区更改为东部时间晚上8点,重新打开终端(用date确认它是东部时间晚上8点之后)并运行RSpec,但测试通过了。

欢迎各位提出宝贵意见!

hmtdttj4

hmtdttj41#

您可以始终尝试确保CI环境中的时区与本地时区相同,就像@Joe建议的那样。还要确保在测试和代码中指定使用哪个时区。

def bad_time_compare
  timestamp > Time.current
end

def better_time_compare
  timestamp > Time.zone.current
end

相关问题