sto cercando di scrivere uno unit test che copre la seguente riga. Network Fakes - Come compensare una proprietà ereditata quando la classe base è astratta?
var fileFullName = fileInfo.FullName;
dove FileInfo è un'istanza di FileInfo.
Sto usando falsi per shimare l'oggetto FileInfo, ma non sono in grado di fornire un valore per la proprietà FullName, perché è ereditato dalla classe base.
Per la proprietà Name, che non è ereditata, posso semplicemente fare questo:
ShimFileInfo.AllInstances.NameGet = info => OriginalFullName;
La risposta fornita da Microsoft è quello di creare lo spessore sulla classe di base, in questo caso FileSystemInfo. Ma se provo questo:
ShimFileSystemInfo.AllInstances.FullNameGet = info => OriginalFullName;
Non funziona, perché FileSystemInfo è una classe astratta che non può essere creato e quindi non può essere spessorato.
In questo caso particolare, posso andare in giro perché posso combinare le proprietà NomeDirectory e nome per renderlo verificabile, ma sembra pazzesco che non posso utilizzare la proprietà che voglio perché capita di venire dal base.
Qualcuno si è imbattuto in questo problema e è riuscito a risolverlo?
Beh, non ho imbattersi in questo problema, ma per quanto riguarda l'uso di Reflection? –
Perché non creare un file di prova? C'è qualche ragione particolare per cui vuoi usare i falsi quando un file di test funzionerà? – gfish3000
Considera cosa vuoi effettivamente testare, se non stai utilizzando un file di test, cosa è effettivamente sotto test qui? Sembra che tu stia andando in una direzione dove tutto quello che testerai saranno i tuoi falsi. – Zache