Макет стати c класс - PullRequest
       40

Макет стати c класс

0 голосов
/ 28 февраля 2020

Я пытаюсь смоделировать класс * stati c и метод * stati c в C#, используя NSubstitute. Я, очевидно, не хочу генерировать файл Excel для каждого модульного теста. Поэтому я определенно хочу издеваться. Но так как это класс stati c, я не могу издеваться, так как это класс stati c.

public static class FileGenerator 
{
    public static async Task GenerateExcelFile(string filename, IEnumerable<T> content) 
    {
        .....
    }
}

var mockobj =  Substitute.For<FileGenerator>(); // Returns error

Есть подсказка?

1 Ответ

0 голосов
/ 28 февраля 2020

Рекомендуется использовать stati c только очень редко. Это одна из тех механик, которую легко и часто неправильно использовать как ярлык. Но это всегда приводит к возникновению проблем в будущем.

Для констант или констант времени выполнения можно использовать stati c. Но не используйте его для изменения данных. Что-то под названием FileGenerator? Прямо там с вещами, которые вы должны не делать, делая c.

Вместо этого:

  • создайте нормальный класс, который нуждается в создании
  • создайте экземпляр и присвойте ему поле * stati c

Теперь вы можете легко иметь несколько экземпляров в paralell. Вы также можете извлечь интерфейс / абстрактный класс, а затем создать другую реализацию. Включая фиктивную реализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...