Sto usando Microsoft Fakes in alcuni test di unità su cui sto lavorando. La mia interfaccia si presenta così:Come si fa riferimento a uno stub che ha un parametro generico di se stesso usando Microsoft Fakes?
interface ISecuredItem<TChildType> where TChildType : class, ISecuredItem<TChildType>
{
SecurityDescriptor Descriptor { get; }
IEnumerable<TChildType> Children { get; }
}
Una tipica implementazione di questo appare come:
class RegistryKey : ISecuredItem<RegistryKey>
{
public SecurityDescriptor Descriptor { get; private set; }
public IEnumerable<RegistryKey> Children { get; }
}
mi piacerebbe utilizzare questa interfaccia con Microsoft falsi, e lo hanno generare uno stub per me. Il problema è che il modulo utilizzato da Fakes è StubInterfaceNameHere<>
, quindi nell'esempio sopra si finisce per provare a fare qualcosa come StubISecuredItem<StubISecuredItem<StubISecuredItem<StubISecuredItem....
È possibile? Se è così, come faccio a usare i falsi in questo modo?
Questo sicuramente farà il trucco, ma richiede l'implementazione dell'interfaccia come stub/mock nel progetto di test. Non so se sia l'idea ... –
Posso immaginare che non è l'idea .. ma non ho potuto vedere alcuna altra soluzione. Quando si guarda il codice sorgente generato dal framework Fakes, il parametro generico è di tipo ISecuredItem, non di StubISecuredItem. Direi quasi che è un bug nel framework. E l'implementazione nel progetto di test può avere tutti i metodi per lanciare NotImplementedException, quindi non dovrebbe costare molto tempo per la creazione. –
Io sono d'accordo, sono assolutamente d'accordo. La soluzione di risposta che mi è venuta in mente automaticamente è quella che hai menzionato. –