Estoy usando Microsoft Fakes en algunas pruebas de unidad en las que estoy trabajando. Mi interfaz se parece a esto:¿Cómo se hace referencia a un stub que tiene un parámetro genérico de sí mismo que utiliza Microsoft Fakes?
interface ISecuredItem<TChildType> where TChildType : class, ISecuredItem<TChildType>
{
SecurityDescriptor Descriptor { get; }
IEnumerable<TChildType> Children { get; }
}
Una aplicación típica de este aspecto:
class RegistryKey : ISecuredItem<RegistryKey>
{
public SecurityDescriptor Descriptor { get; private set; }
public IEnumerable<RegistryKey> Children { get; }
}
me gustaría utilizar esta interfaz con Microsoft falsificaciones, y tienen que generar un talón para mí. El problema es que el formulario que utiliza Fakes es StubInterfaceNameHere<>
, por lo que en el ejemplo anterior, usted intenta hacer algo como StubISecuredItem<StubISecuredItem<StubISecuredItem<StubISecuredItem....
¿Esto es posible? Si es así, ¿cómo utilizo las falsificaciones de esta manera?
Esto definitivamente hará el truco, pero requiere implementar la interfaz como un stub/mock en el proyecto de prueba. No sé si esa es la idea ... –
Me imagino que no es la idea ... pero no pude ver ninguna otra solución. Cuando mira el código fuente que genera el marco Fakes, el parámetro genérico es del tipo ISecuredItem, no de StubISecuredItem. Casi diría que es un error en el marco. Y la implementación en el proyecto de prueba puede hacer que todos los métodos arrojen una NotImplementedException, por lo que no debería costar demasiado tiempo crearla. –
Yo kno, estoy totalmente de acuerdo. La solución de respuesta que automáticamente se me vino a la mente es la que mencionaste. –