加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何对剃刀视图进行单元测试

发布时间:2020-12-16 04:06:45 所属栏目:asp.Net 来源:网络整理
导读:当斯科特格思里 first blogged on Razor时,他写道 The new view engine implementation will support the ability to unit test views (without requiring a controller or web-server,and can be hosted in any unit test project – no special app-domain
当斯科特格思里 first blogged on Razor时,他写道

The new view engine implementation will support the ability to unit test views (without requiring a controller or web-server,and can be hosted in any unit test project – no special app-domain required).

但是,我找不到关于剃刀可测试性的其他声明(或示例).
有指向使用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,但大多数都相当古老……

解决方法

我认为您可以对任何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以检查具有规范的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读