Próbuję napisać badanej jednostki, które obejmuje następujący wiersz.Net Fakes - Jak przekazać odziedziczoną właściwość, gdy klasa podstawowa jest abstrakcyjna?
var fileFullName = fileInfo.FullName;
gdzie Fileinfo jest instancją FileInfo.
Używam podróbek do shim obiektu FileInfo, ale nie jestem w stanie podać wartości dla właściwości FullName, ponieważ jest ona dziedziczona z klasy bazowej.
dla właściwości Nazwa, która nie jest dziedziczona, mogę po prostu to zrobić:
ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
Odpowiedź dostarczone przez Microsoft jest stworzenie podkładkę na klasy bazowej, w tym przypadku FileSystemInfo. Ale gdy próbuję to:
ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
To nie działa, ponieważ FileSystemInfo jest klasą abstrakcyjną, które nie mogą być tworzone i dlatego nie może być podkładano.
W tym konkretnym przypadku mogę obejść ten problem, ponieważ mogę połączyć właściwości DirectoryName i Name, aby umożliwić jego testowanie, ale wydaje się szalone, że nie mogę po prostu użyć właściwości, której chcę, ponieważ zdarza się, że pochodzi ona od baza.
Czy ktoś napotkał ten problem i zdołał go rozwiązać?
Cóż, nie mam napotkasz ten problem, ale co z korzystaniem z Reflection? –
Dlaczego nie wystarczy utworzyć plik testowy? Czy istnieje jakiś szczególny powód, dla którego chcesz używać podróbek, gdy zrobi to plik testowy? – gfish3000
Zastanów się, co naprawdę chcesz przetestować, jeśli nie używasz pliku testowego, to co jest aktualnie testowane? Wygląda na to, że zmierzasz w kierunku, w którym wszystko, co będziesz testować, to twoje podróbki. – Zache