So verspotten Sie den Controller-Kontext mit moq
Ich probiere das MOQ-Framework aus und bin jetzt an eine Barriere gestoßen. Der folgende Komponententest schlägt fehl, da der tatsächliche Wert der ViewName-Eigenschaft eine leere Zeichenfolge ist.
Könnte mich bitte jemand in die richtige Richtung weisen, warum dies nicht den Test besteht?
[TestMethod]
public void Can_Navigate_To_About_Page()
{
var request = new Mock<HttpRequestBase>();
request.Setup(r => r.HttpMethod).Returns("GET");
var mockHttpContext = new Mock<HttpContextBase>();
mockHttpContext.Setup(c => c.Request).Returns(request.Object);
var controllerContext = new ControllerContext(mockHttpContext.Object,
new RouteData(),
new Mock<ControllerBase>().Object);
var controller = new HomeController();
controller.ControllerContext = controllerContext;
var result = controller.About() as ViewResult;
Assert.AreEqual("About", result.ViewName);
}
Das Folgende ergibt auch einen leeren ViewName.
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
Assert.IsNotNull(result);
Assert.AreEqual("About", result.ViewName);
Anhand von Beispielen im Internet, die Spott und gute TTD demonstrieren, bin ich nur verwirrt darüber, welche anderen Installationen ich benötige, um eines der obigen Beispiele für den ersten Unit-Test zum Laufen zu bringen.
Prost,
Andrew