Есть ли альтернатива Microsoft Fakes в .NET Core?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли альтернатива Microsoft Fakes в .NET Core?

Сообщение Anonymous »

Я ищу альтернативу Microsoft Fakes в .NET Core. Я знаю, что он больше не поддерживается в .NET Core. Я просто не понимаю, почему бы и нет, я думаю, что это было хорошее решение в определенных ситуациях.

Моя проблема в том, что я хочу издеваться над DateTime.Now. Раньше это можно было сделать с помощью следующего кода:

Код: Выделить всё

System.Fakes.ShimDateTime.NowGet = () =>
{
return new DateTime(2000, 1, 1);
};
Это описано в документации Microsoft, дополнительную информацию см. по ссылке: https://learn.microsoft.com/en-us/visua ... est/using- прокладки-чтобы-изолировать-ваше-приложение-от-других-сборок-для-модульного-тестирования?view=vs-2017

На данный момент я решил эту проблему, создав оболочка для 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;
}
}
Этим решением я обязан следующему сообщению StackOverflow:
Модульное тестирование: DateTime.Now

Но меня это решение пока не устраивает, потому что я чувствую, что мне нужно скорректировать свою реализацию для тестирования. Я не думаю, что это желательно.

Надеюсь, кто-нибудь сможет мне в этом помочь, заранее спасибо за усилия.

Подробнее здесь: https://stackoverflow.com/questions/524 ... n-net-core
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»