Si alguien está buscando la forma de crear HtmlHelper<T>
(eso es lo que buscaba), aquí es una aplicación que podría ayudar - mi tipo es un modelo de clase llamada :
public static HtmlHelper<Model> CreateHtmlHelper()
{
ViewDataDictionary vd = new ViewDataDictionary(new Model());
var controllerContext = new ControllerContext(new Mock<HttpContextBase>().Object,
new RouteData(),
new Mock<ControllerBase>().Object);
var viewContext = new ViewContext(controllerContext, new Mock<IView>().Object, vd, new TempDataDictionary(), new Mock<TextWriter>().Object);
var mockViewDataContainer = new Mock<IViewDataContainer>();
mockViewDataContainer.Setup(v => v.ViewData).Returns(vd);
return new HtmlHelper<Model>(viewContext, mockViewDataContainer.Object);
}
O una aplicación más genérica:
public HtmlHelper<T> CreateHtmlHelper<T>() where T : new()
{
var vd = new ViewDataDictionary(new T());
var controllerContext = new ControllerContext(new Mock<HttpContextBase>().Object,
new RouteData(),
new Mock<ControllerBase>().Object);
var viewContext = new ViewContext(controllerContext, new Mock<IView>().Object, vd, new TempDataDictionary(), new Mock<TextWriter>().Object);
var mockViewDataContainer = new Mock<IViewDataContainer>();
mockViewDataContainer.Setup(v => v.ViewData).Returns(vd);
return new HtmlHelper<T>(viewContext, mockViewDataContainer.Object);
}
lamentablemente los errores de entrada de blog, pero el anterior explica muy bien lo que tiene que hacer – MJJames
parece que han cambiado el MV C marco ligeramente ya que el anterior como ViewContext ahora también toma un TextWriter –
Esto es muy útil, pero probando contra MVC3 Tuve que modificar esto agregando un nuevo parámetro al mockViewContextConstructor (utilicé 'TextWriter.Null') y en lugar del mockViewDataContainer, tuve que establecer ViewData explícitamente (por ejemplo, 'mockViewDataContainer.ViewData = viewData;') o Rhino Mocks lanza una excepción. –