单元测试:
test "job update date" do
@job.save
@job.company = 'New Company'
now = DateTime.now
@job.save
assert_equal @job.updated_at, now
end
我最终得到了:
1) Failure: test_job_update_date(JobTest) [test/unit/job_test.rb:32]:
<Mon, 26 Mar 2012 10:36:11 UTC +00:00> expected but was <Mon, 26 Mar 2012 12:36:11 +0200>.
从模型中保存方法:
def save
if self.created_at.nil?
self.created_at = DateTime.now
self.expires_at = self.created_at + Jobeet::Application::ACTIVE_DAYS
else
self.updated_at = DateTime.now
end
super
end
有人可能会为我发生这种情况吗?
答案 0 :(得分:1)
所有DateTimes都以UTC格式存储在数据库中,而不是您当地的时间。
Rails提供了许多转换为UTC的方法。在您的情况下,您可以使用utc
方法进行测试通过(尽管我会提醒您不要编写依赖于特定时间的测试,因为您肯定会遇到不一致):
assert_equal @job.updated_now, now.utc
资源: