Моя проблема в том, что я хочу издеваться над DateTime.Now. Раньше это можно было сделать с помощью следующего кода:
Код: Выделить всё
System.Fakes.ShimDateTime.NowGet = () =>
{
return new DateTime(2000, 1, 1);
};
На данный момент я решил эту проблему, создав оболочка для DateTime, которая выглядит следующим образом:
Код: Выделить всё
///
/// Used for getting DateTime.Now(), time is changeable for unit testing
///
public static class SystemTime
{
///
/// Normally this is a pass-through to DateTime.Now, but it can be
/// overridden with SetDateTime( .. ) for testing or debugging.
///
public static Func Now = () => DateTime.Now;
///
/// Set time to return when SystemTime.Now() is called.
///
public static void SetDateTime(DateTime dateTimeNow)
{
Now = () => dateTimeNow;
}
///
/// Resets SystemTime.Now() to return DateTime.Now.
///
public static void ResetDateTime()
{
Now = () => DateTime.Now;
}
}
Модульное тестирование: DateTime.Now
Но меня это решение пока не устраивает, потому что я чувствую, что мне нужно скорректировать свою реализацию для тестирования. Я не думаю, что это желательно.
Надеюсь, кто-нибудь сможет мне в этом помочь, заранее спасибо за усилия.
Подробнее здесь: https://stackoverflow.com/questions/524 ... n-net-core