Щоб відповісти на ваше конкретне запитання: Ні, немає жодної бібліотеки, яка дозволить вам знущатися над файловими дзвінками вводу / виводу (про які я знаю). Це означає, що для правильного тестування блоків, які перевіряють ваші типи, потрібно буде врахувати це обмеження під час визначення типів.
Швидка примітка про те, як я визначаю "правильний" тест на одиницю. Я вважаю, що одиничні тести повинні підтвердити отримання очікуваного результату (будь то виняток, використання методу тощо) за умови відомих даних. Це дозволяє встановити умови тестування пристрою як набір входів та / або станів введення. Найкращий спосіб, який я знайшов для цього, - це використання сервісів на основі інтерфейсу та введення залежностей, щоб кожна відповідальність, яка є зовнішньою для типу, забезпечувалася через інтерфейс, переданий через конструктор або властивість.
Отже, маючи це на увазі, поверніться до вашого питання. Я знущався над дзвінками файлової системи, створюючи IFileSystemService
інтерфейс разом із FileSystemService
реалізацією, яка є просто фасадом над методами файлової системи mscorlib. Мій код тоді використовує, IFileSystemService
а не типи mscorlib. Це дозволяє мені підключити мій стандарт, FileSystemService
коли програма працює або знущається над IFileSystemService
тестами мого модуля. Код програми однаковий незалежно від способу його запуску, однак базова інфраструктура дозволяє легко перевірити цей код.
Я визнаю, що використовувати оболонку навколо об'єктів файлової системи mscorlib боляче, але, у цих конкретних сценаріях, варто додатково працювати, оскільки тестування стає набагато простішим та надійнішим.