0
當我運行這段代碼:單元測試.NET日期時間到SQL datetime值
var data = "test"; var timestamp = DateTime.Now; var id = repo.InsertNewRecord(data, timestamp); var record = repo.GetRecord(id); Assert.AreEqual(data, record.Data); Assert.AreEqual(timestamp, record.TimeStamp);
...它失敗的第二個斷言。
期望的時間戳有一個滴答計數635449135145624472,但我從數據庫收到的值有一個滴答計數635449135140000000.這是可以理解的,因爲.NET DateTime值的準確性爲100ns,而SQL Server DateTime只有精確度爲3.33ms。我並不需要成爲比這更準確的時間戳,但是有沒有一種測試輸入和輸出相等的標準方法?
從數據庫獲取時間戳是做到這一點的一種方法:
var timestamp = Session.CreateSQLQuery("SELECT GetDate()").UniqueResult<DateTime>();