[英].Net Unit Testing the UTC and local time difference
我正在嘗試對以下方法進行單元測試:
Public Shared Function GetLocalTimeWithTimeDifferenceUTC(startTime As DateTime) As String
Dim localTime As String = ""
Dim timeUTC As DateTime = startTime.ToUniversalTime()
Dim timeDiff As TimeSpan = startTime.Subtract(timeUTC)
Dim sSign As String = "+"
If timeDiff.TotalMinutes < 0 Then
sSign = "-"
timeDiff = timeDiff.Negate
End If
Dim offsetUTC As String = sSign & String.Format("{0:d2}:{1:d2}", timeDiff.Hours, timeDiff.Minutes)
localTime = startTime.ToString("yyyy-MM-ddTHH:mm:ss") & offsetUTC
Return localTime
End Function
它返回(例如startTime = 2015,3,18,10,0,0時差為兩個小時之和)2015-03-18T10:00:00 + 02:00。
這是我的單元測試:
Public Sub GetLocalTimeWithTimeDifferenceUTC_Test()
Dim expected As String
Dim actual As String
Dim param As New System.DateTime(2015, 3, 5, 10, 0, 0)
expected = "2015-03-05T10:00:00+03:00"
Using (ShimsContext.Create())
System.Fakes.ShimDateTime.NowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 10, 0, 0)
End Function
System.Fakes.ShimDateTime.UtcNowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 7, 0, 0)
End Function
actual = StringFunctions.GetLocalTimeWithTimeDifferenceUTC(param)
End Using
Assert.AreEqual(expected, actual)
End Sub
我應用於DateTime.Now和DateTime.UtcNow的更改不起作用,測試失敗。 當我嘗試使用本地時間時,它可以工作。 是否可能由函數ToUniversalTime()引起? 我應該改變自己的方法嗎? 任何幫助將不勝感激。 提前致謝。
您必須像這樣提供本地和UTC DateTimeKind
Public Sub GetLocalTimeWithTimeDifferenceUTC_Test()
Dim expected As String
Dim actual As String
Dim param As New System.DateTime(2015, 3, 5, 10, 0, 0)
expected = "2015-03-05T10:00:00+03:00"
Using (ShimsContext.Create())
System.Fakes.ShimDateTime.NowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 10, 0, 0, DateTimeKind.Local)
End Function
System.Fakes.ShimDateTime.UtcNowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 7, 0, 0, DateTimeKind.Utc)
End Function
actual = StringFunctions.GetLocalStartTime(param)
End Using
Assert.AreEqual(expected, actual)
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.