Tengo una clase que toma una instancia de MethodInfo y extrae algo de información de ella, pero me gustaría simular esta clase. Por el momento es difícil porque requiere un MethodInfo, por lo que mi plan era crear un contenedor para la clase MethodInfo e implementar una interfaz en él. Por ejemplo:Simulacros de clases .NET que utilizan clases contenedoras
public interface IMethodInfo
{
string Name { get; }
}
public class MethodInfoProxy : IMethodInfo
{
private readonly MethodInfo _method;
public MethodInfoProxy(MethodInfo method)
{
_method = method;
}
public string Name { get { return _method.Name; } }
}
public class MyClass
{
public MyClass(IMethodInfo method)
{
...
}
}
Otro ejemplo sería el método File.Exists. El pensamiento sería crear un IFile.Exists y ponerlo en una clase FileProxy que simplemente delegaría a File.Exists.
Como soy nuevo en el mundo entero de pruebas de unidades, me gustaría saber si esto se consideraría un buen enfoque para tomar.
Realmente no veo por qué el hecho de que se necesita un objeto MethodInfo plantea un problema al burlarse de la clase? – wendazhou
Acabo de notar que MethodInfo usa la interfaz _MethodInfo que podría usar. Pero, ¿y si quisiera burlarme de Directory.Exists o File.Exists? Si creé una clase contenedora para cada clase/método/propiedad que necesito, entonces supongo que sería más fácil cuando la unidad pruebe mis clases. – MotoSV