Wenn jemand sucht, wie HtmlHelper<T>
zu erstellen (das ist, was ich war nach), hier ist eine Implementierung, die helfen könnte - mein Typ ist eine Klasse mit dem Namen Modell :
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);
}
Oder eine allgemeinere Umsetzung:
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);
}
leider die Post Fehler Blog aber die oben erklärt ganz gut, was Sie – MJJames
tun müssen, Sieht aus wie sie die MV verändert haben C Framework leicht seit dem oben als ViewContext nimmt jetzt auch einen TextWriter –
Dies ist sehr hilfreich, aber testing gegen MVC3 Ich musste dies durch Hinzufügen eines neuen Parameters zum mockViewContextConstructor (ich benutzte 'TextWriter.Null') und anstelle der mockViewDataContainer, ich musste ViewData explizit setzen (zB 'mockViewDataContainer.ViewData = viewData;') oder Rhino Mocks löst eine Exception aus. –