Если мои модульные тесты полагаются на файловую систему, и я должен дразнить это, что лучший способ состоит в том, чтобы пойти об этом?
Спасибо
В основном у вас есть два варианта: либо абстрагировать всю логику, связанную с файловой системой, за IFileSystemService
, либо использовать Stubs от Microsoft, что является
... облегченной структурой для .NET. который предоставляет тестовые заглушки. Для интерфейсов и незапечатанных классов создаются типобезопасные оболочки, которые можно легко настроить путем присоединения делегатов.
Файловая система является отличным примером того, как TDD может привести вас к лучшему и более гибкому дизайну. Часто при взаимодействии с файловой системой можно выполнять чтение и запись файлов с помощью Streams или TextWriters вместо фактических файлов.
Это все абстрактные типы, и так легко издеваться.
Теперь у вас есть более гибкий API, потому что он не тесно связан с файловой системой, но по-прежнему поддерживает операции с файлами.
-121--3329677-Структуры предназначены исключительно для продвинутых пользователей (вместе с out и ref).
Да, структуры могут обеспечить высокую производительность при использовании ref, но вы должны видеть, какую память они используют. Кто управляет памятью и т.д.
Если вы не используете ref и выходы со структурами, они не стоят того, если вы ожидаете некоторые неприятные ошибки: -)
-121--1647273-Это Требуется: интерфейсы файловой системы и реализация в .NET могут быть полезны
Файловая система - отличный пример того, как TDD может привести вас к лучшему и более гибкому дизайну. Часто, когда вы взаимодействуете с файловой системой, вы можете иметь дело с чтением и записью файлов, используя Streams или TextWriters вместо фактических файлов.
Все это абстрактные типы, поэтому их легко высмеять.
Теперь у вас есть более гибкий API, потому что он не тесно связан с файловой системой, но по-прежнему поддерживает файловые операции.