Убедитесь, что вы согласны с самим собой, если это услуга или субъект предпринимательства.
Служба обычно признается в том, что она использует набор бизнес-объектов для выполнения какой-либо задачи и сама не поддерживает постоянные данные.
Бизнес-сущность - это единица в вашей проблемной области, которую вы хотели бы сохранить концептуально.
Если вы обнаружите, что это сервис, вы должны каким-то образом внедрить зависимость при создании сервиса.
Обычно это может иметь конструктор, подобный этому:
общедоступный MyService (IFileObject)
При построении из основного:
var service = new MyService (MyRealFile)
При построении из тестовой установки:
var service = new MyService (MyMockedFiled)
Если вы обнаружите, что то, что вы тестируете, на самом деле является бизнес-сущностью, тогда вам следует избегать предоставления сущности зависимости. Обычно вы делаете шаг назад и создаете класс Service между вами и бизнес-объектом. Служба явно передает бизнес-субъекту все необходимые данные. В вашем случае это означает, что служба предоставляет объекту все, что он должен изучить, читая файл.
Служба, таким образом, является зависимой от файловой системы и может даже использовать другую (выделенную) бизнес-единицу для чтения файлов для чтения файла. Вы никогда не хотели бы, чтобы бизнес-объекты делали мошеннические вызовы зависимостей, если вы используете их где-то еще в системе. Их код становится связанным с контекстом, чего вы хотели бы избежать. Бизнес должен быть быстрым, дискретным, определенным и отзывчивым.
Ваш юнит-тест должен состоять в службе, которая может получить зависимость путем инъекции. Если вы обнаружите, что проводите модульное тестирование бизнес-объекта, значит, вам не хватает уровня обслуживания.