Я пытаюсь написать модульный тест, который охватывает следующую строку.Net Fakes - Как прокрасить унаследованное свойство, когда базовый класс является абстрактным?
var fileFullName = fileInfo.FullName;
где FILEINFO является экземпляром FileInfo.
Я использую подделки, чтобы закрепить объект FileInfo, но я не могу предоставить значение для свойства FullName, потому что он унаследован от базового класса.
Для свойства Name, которое не наследуется, я могу просто сделать это:
ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
Ответ, предоставленный корпорацией Майкрософт, чтобы создать прокладку на базовом классе, в этом случае FileSystemInfo. Но если я пытаюсь это:
ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
Это не работает, потому что FileSystemInfo это абстрактный класс, который не может быть создан и, следовательно, не может быть подкладками.
В этом конкретном случае я могу обойти его, потому что я могу комбинировать свойства DirectoryName и Name, чтобы сделать его проверяемым, но кажется сумасшедшим, что я не могу просто использовать свойство, которое я хочу, потому что оно происходит из база.
Пришел ли кто-нибудь к этой проблеме и смог ее решить?
Ну, у меня нет столкнулись с этой проблемой, но как насчет использования Reflection? –
Почему бы просто не создать тестовый файл? Есть ли какая-то особая причина, по которой вы хотите использовать подделки, когда тестовый файл будет делать? – gfish3000
Рассмотрите, что вы на самом деле хотите протестировать, если вы не используете тестовый файл, то что на самом деле тестируется? Похоже, вы идете в направлении, все, что вы будете тестировать, это ваши подделки. – Zache