Мне нужно проверить метод, который вычисляет разницу во времени по местному времени и UTC. Поэтому я попытался использовать прокладки, чтобы изменить местное время и UTC, но это не работает. Вот мой блок кода тест:Использование прокладки .NET для модульного тестирования метода datetime
<TestMethod()> Public Sub CurrentTimeTest()
'Arrange
Dim expected As System.DateTime
expected = New DateTime(2015, 3, 5, 20, 0, 0)
Dim actual As DateTime
actual = DateTime.Now
'Act
Using (ShimsContext.Create())
System.Fakes.ShimDateTime.NowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 20, 0, 0)
End Function
System.Fakes.ShimDateTime.UtcNowGet = Function() As System.DateTime
Return New DateTime(2015, 3, 5, 15, 0, 0)
End Function
End Using
'Assert
Assert.AreEqual(expected, actual)
End Sub
Я не могу понять, почему DateTime.Now не равно, что я установил. Любая помощь будет оценена по достоинству. Заранее спасибо.
Лучшим решением (IMO) было бы создание интерфейса для «чего-то, что дает вам текущее время» (возможно, только UTC) и впрыснуть туда, где вам это нужно ... тогда вы можете иметь «производственную» реализацию и «тест». Это то, что мы делаем для Noda Time ... Я использовал его в нескольких сценариях, и это намного более чистое ИМО. –