if current_updated_time.eql?(user_obj.updated_at)
在进行更新操作时,我们正在比较updated_at。运行rspec时间和时区未正确匹配。
答案 0 :(得分:0)
这是测试套件中的常见问题,幸运的是,有一些常见的解决方案。
您可以尝试从比较的时间戳中删除微秒(因为在最短的时间测量中,您的RDBMS供应商和主机应用程序语言可能会有所不同)。
您可以尝试使用timecop gem,这有助于处理这些细节。您基本上可以冻结当前时间,创建任何时间相关的数据或比较值,并根据您的期望使用这些值。
最后,请确保您正在比较正确的时区和日期或时间数据类型。您可能希望查看Ruby的Time和Date类的文档,以及是否使用Rails,TimeWithZone类。在时区比较之间遇到问题非常常见,因此您希望始终使用一致的数据类型进行这些比较(即,不要将Date.today
与Time.now
或1.day.ago
进行比较,因为这些可能都会使用不同的时区)。关于这个主题有很多博客文章,所以我建议您阅读有关比较Ruby中的时间值的内容。
它可以帮助打开一个Ruby控制台,并尝试使用不同的方法来生成时间值,这样你就可以了解哪个表达式默认为你当前的系统时区,它将使用GMT等。最后,确保您使用一个一致的数据类型和模式(即相同的时区)在整个测试套件中生成时间值。