Как делают меня MOQ Система. Класс IO.FileInfo … или какой-либо другой класс без интерфейса?

Попробуйте MinGW, минималистский GNU для Windows. Вот список инструментов GNU, которые они предлагают: http://sourceforge.net/projects/mingw/files/

Сюда входят такие вещи, как bash, sed, awk, grep, cut и другие знакомые инструменты GNU. Perl тоже там. Я считаю, что это хорошая легкая альтернатива Cygwin.

25
задан Konamiman 15 June 2015 в 09:29
поделиться

2 ответа

Используйте SystemWrapper , библиотеку, которая предоставляет интерфейсы и имитируемые классы-оболочки для многих классов .NET, которые сами по себе не реализуют интерфейсы.

19
ответ дан 28 November 2019 в 20:43
поделиться

Разработайте свой код так, чтобы вместо прямого доступа к классу FileInfo обращался к интерфейсу (например, с именем IFileInfo ) с теми же возможностями. В производственном коде вы будете использовать класс, который просто делегирует все свои функции классу системы FileInfo , но для модульного тестирования вы можете имитировать интерфейс.

Например, в приложении, которое я сделал, действовало иначе в зависимости от текущей даты я объявил следующий интерфейс:

interface IDateTimeProvider
{
    DateTime Today();
}

А производственный класс был просто:

class DateTimeProvider : IDateTimeProvider
{
    public DateTime Today()
    {
        return DateTime.Today;
    }
}

Вы можете дополнить этот подход использованием механизма внедрения зависимостей, чтобы решить, следует ли использовать реальный класс или макет в каждом случае.

32
ответ дан 28 November 2019 в 20:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: