当Scott Guthrie first blogged on Razor,他写道
新的视图引擎实现将支持单元测试视图的功能(无需控制器或Web服务器,并且可以托管在任何单元测试项目中 - 无需特殊的应用程序域)。
但是,我找不到关于剃刀可测试性的其他声明(或示例)。
有指向使用CodelanguageServie
或RazorGenerator或some self-made renderer - 非我称之为"设计"。
目前是否可以通过简单的方式对剃刀视图进行单元测试? (在asp.net mvc应用程序中,即。即NancyFx在其中带来了可测试性的nancy.testing-package。)
(目前我不在乎if views should be tested or not。)
我知道有loads of questions like this one,但其中大部分都比较陈旧......
答案 0 :(得分:0)
我认为您可以对以下任何Razor视图进行单元测试:
ViewResult v = View("~/Views/Home/Index.cshtml");
if (string.IsNullOrEmpty(v.ViewName))
v.ViewName = RouteData.GetRequiredString("action");
ViewEngineResult result = null;
StringBuilder sb = new StringBuilder();
StringWriter textwriter = new StringWriter(sb);
HtmlTextWriter htmlwriter = new HtmlTextWriter(textwriter);
if (v.View == null)
{
result = new ViewEngineResult(new RazorView(ControllerContext,"~/Views/Home/Index.cshtml", null,false,null), new RazorViewEngine());
v.View = result.View;
}
ViewContext viewContext = new ViewContext(ControllerContext, v.View, ViewData, TempData, htmlwriter);
v.View.Render(viewContext, htmlwriter);
string html = sb.ToString();
在此之后,您可以解析html以检查规范中的内容。