Por lo general, implementaría este tipo de esto como Interface
- entonces puede usar un marco de simulación para stub para probarlo, y un marco IoC para inyectar la implementación correcta en tiempo de ejecución.
He aquí un ejemplo de mi proyecto actual:
public interface IUserInterface
{
string AskUserWhereToSaveFile(
string title,
FileType defaultFileType,
string defaultFileName = null,
params FileType[] otherOptions
);
string AskUserToSelectFileToLoad(
string title,
FileType defaultFileType,
params FileType[] fileTypes
);
void ShowError(string title, string details);
bool AskUserIfTheyWantToRetryAfter(string errorMessage);
}
Mi controlador tiene entonces una dependencia en IUserInterface lugar de una visión concreta, que me permiten reemplazar las interacciones del usuario con un trozo para la prueba.
Si está buscando cómo implementar un proyecto HO utilizando VS, eche un vistazo a esto. http://stackoverflow.com/a/19121286/1977871 – VivekDev