Estoy escribiendo algunas pruebas de unidad para un método de extensión que he escrito en IPrincipal
. Para ayudar, he creado un par de clases de ayuda (algo de código para los miembros no implementados de las interfaces se ha omitido por razones de brevedad):¿Cómo se crea un apéndice de pruebas unitarias para una interfaz que contiene un miembro de solo lectura?
public class IPrincipalStub : IPrincipal
{
private IIdentity identityStub = new IIdentityStub();
public IIdentity Identity
{
get { return identityStub; }
set { identityStub = value; }
}
}
public class IIdentityStub : IIdentity
{
public string Name { get; set; } // BZZZT!!!
}
Sin embargo, la propiedad Name
en la interfaz IIdentity
es de sólo lectura (la interfaz IIDentity
especifica un getter pero no un setter para la propiedad Name).
¿Cómo puedo establecer la propiedad Name en mi objeto de stub para fines de prueba si la interfaz lo ha definido como una propiedad de solo lectura?
Constructor? es decir, 'IIdentityStub' tendrá un constructor parametrizado que tome Name como parámetro. – shahkalpesh
¿Su "BZZZT" se refiere a un error de compilación? Pude compilar su muestra muy bien (con puntos y comas en la propiedad Identity, eso es). – micahtan
@micahtan: Sí, pero cuando intenta escribir una prueba en su contra, y establece el valor de 'Name' en la prueba, el compilador se quejará de que' Name' es de solo lectura, porque la propiedad 'Name' en' IIDentity' no tiene un setter definido. –