Как в юнит-тестах сделать mock для файловой системы?

Это перевод вопроса с en so How do you mock out the file system in C# for unit testing?

Есть ли какая-нибудь библиотека или метод создания в юнит-тестах моков для работы с файловой системой? В моём конкретном случае у меня есть методы которые тестируют наличие файла на диске и читают дату создания, возможно в будущем мне понадобятся и другие возможности.


Ответы (1 шт):

Автор решения: A K

Установите NuGet пакет System.IO.Abstractions. Не от вендора, но всё-таки готовый и с поддержкой анализаторов roslyn.

Более ранняя версия ответа на en so содержала классическую рекомендацию выделить интерфейс и дальше уже мокать его своей библиотекой тестирования.

interface IFileSystem {
    bool FileExists(string fileName);
    DateTime GetCreationDate(string fileName);
}
→ Ссылка