我正在尝试MOQ框架,现在我已经遇到了障碍。以下单元测试失败,因为ViewName属性的实际值是空字符串。如何用moq模拟控制器上下文
任何人都可以指出我在正确的方向,请问为什么这不通过测试?
[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);
}
以下也会产生一个空的ViewName。
HomeController controller = new HomeController();
ViewResult result = controller.About() as ViewResult;
Assert.IsNotNull(result);
Assert.AreEqual("About", result.ViewName);
从中演示了嘲讽网络以及良好的TTD上的例子,我只是困惑,我需要什么其他的管道,使上述任一第一单元测试例的工作。
干杯,
安德鲁
Thankyou在看到方法签名之一是View(字符串viewName,对象模型)后,您的观点变得非常有意义!附:测试通过了! :-) – 2009-07-30 14:41:06