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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage