2012-03-26 13 views
0

單元測試:單元測試和DateTime行爲的解釋需要

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 

可能有人exaplain我爲什麼這個發生?

回答

1

所有DateTime都以UTC格式存儲在數據庫中,而不是本地時間。

Rails提供了許多轉換UTC和UTC的方法。

assert_equal @job.updated_now, now.utc 

資源:

在你的情況,你可以通過使用 utc方法(雖然我奉勸不要依賴於特定的時間,你肯定會碰到資料不一致的寫作測試),讓您的測試通過

http://api.rubyonrails.org/classes/DateTime.html