Cómo burlarse del contexto del controlador con moq

Estoy probando el marco de MOQ y ahora he golpeado una barrera. La siguiente prueba de unidad falla porque el valor real de la propiedad ViewName es una cadena vacía.

¿Podría alguien dirigirme en la dirección correcta, por favor, por qué esto no está pasando la prueba?

[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);
}

Lo siguiente también produce un ViewName vacío.

        HomeController controller = new HomeController();
        ViewResult result = controller.About() as ViewResult;
        Assert.IsNotNull(result);
        Assert.AreEqual("About", result.ViewName);

A partir de ejemplos en la web que demuestran burla y también buen TTD, estoy confundido en cuanto a qué otras tuberías necesito para hacer que cualquiera de los primeros ejemplos de prueba de unidad funcione.

Aclamaciones,

Andrés

Respuestas a la pregunta(2)

Su respuesta a la pregunta