我正在尝试最小起订量框架,但现在我遇到了障碍。以下单元测试失败,因为 ViewName 属性的实际值是空字符串。
有人能指出我正确的方向吗?为什么这没有通过测试?
[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 的示例中,我只是对需要哪些其他管道才能使上述第一个单元测试示例正常工作感到困惑。
Cheers,
Andrew
测试失败的原因是,当您没有明确指定 ViewName 时,决定 ViewName 的因素是在框架的深处。更准确地说,我相信在视图引擎中。因此,要按目前的情况进行测试,您必须模拟更多的请求管道。
我所做的并且建议不要依赖默认值并明确指定视图:
return View("About");
然后该值将在那里进行测试而无需模拟任何内容:
var controller = new HomeController();
var result = controller.About() as ViewResult;
Assert.AreEqual("About", result.ViewName);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)