在ASP.NET MVC里我们可以很方便的对模型Model、控制器Controller进行单元测试,但对于

视图View的测试就没那么容易和直接了。在这里介绍一种方法,使用RazorGenerator对View进行

单元测试。

废话不多说,直接上图。主要方法和步骤如下:

1、创建ASP.NET MVC 项目和相应的测试项目。

2、在Web项目中nuget添加包:RazorGenerator.MsBuild。

3、在测试项目中nuget添加包:RazorGenerator.Testing;添加包 NUnit

4、在Web项目中修改待测试的代码 Views\Shared\Error.cshtml

@model System.Web.Mvc.HandleErrorInfo@{ViewBag.Title = "Error";
}<div id="content"><h1 class="text-danger">Error.</h1><h2 class="text-danger">An error occurred while processing your request.</h2>
</div>

5、在Web测试项目添加测试代码

using System;
using System.Linq;
using System.Web.Mvc;
using HtmlAgilityPack;
using NUnit.Framework;
using RazorGenerator.Testing;namespace WebApplication1.Tests.Views.Shared
{[TestFixture]public class ErrorTest1{[Test]public void TestMethod1(){AssertHtml<ASP._Views_Shared_Error_cshtml, HandleErrorInfo>("content",
@"<h1 class=""text-danger"">Error.</h1><h2 class=""text-danger"">An error occurred while processing your request.</h2>");}public static HtmlDocument Render<TView,TModel>()where TView : WebViewPage<TModel>, new(){TView view1 = new TView();WebViewPage<TModel> view = view1 as WebViewPage<TModel>;HtmlDocument doc = view.RenderAsHtml();Assert.IsEmpty(doc.ParseErrors.Where(x => x.Code != HtmlParseErrorCode.EndTagNotRequired));return doc;}public static void AssertHtml<TView, TModel>(string containerId, string expected, bool collapsed = false)where TView : WebViewPage<TModel>, new(){HtmlDocument doc = Render<TView,TModel>();expected = expected.Replace("\r\n", "\n");string actual =  doc.GetElementbyId(containerId).InnerHtml.Trim().Replace("\r\n", "\n");Assert.AreEqual(expected, actual);}}
}

6、运行测试,测试通过。

转载于:https://www.cnblogs.com/weightbomb/p/5562021.html

使用RazorGenerator对视图View进行单元测试相关推荐

  1. Asp.net MVC中使用Razor Generator实现View的单元测试

    Asp.net MVC 3 应用程序中,单元测试对项目的质量意义重大.除了对Model,Controller进行单元测试,有时还需要对View也进行.对View进行测试目前并不容易做,大多数情况下可能 ...

  2. Oracle 学习笔记 11 -- 视图 (VIEW)

    本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...

  3. 3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)

    文章目录 0.前言 1.思维导图 2.基本表更新---TABLE (1)插入数据---INSERT INTO ① 插入元组 ② 插入子查询结果 (2)修改数据---UPDATE SET ① 修改某一个 ...

  4. MySQL笔记(六)视图 view

    这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是Mysq的视图 view.有错误的欢迎大家指出... 数据库的创建参考我的另一篇博客 https://blog.csdn.net/cs ...

  5. 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法...

    这是view中的model代码: @model t_user_info 这是web.config配置文件只的代码: <namespaces><add namespace=" ...

  6. mysqldump导出数据库视图_mysql中如何用mysqldump批量如何导出视图view啊?

    你的位置: 问答吧 -> MySQL -> 问题详情 mysql中如何用mysqldump批量如何导出视图view啊? mysql中如何用mysqldump批量如何导出视图view啊? 我 ...

  7. dns日志级别 linux,linux下DNS服务器视图view及日志系统详解

    linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...

  8. django批量修改table_python中Django视图(view)的详解(附示例)

    本篇文章给大家带来的内容是关于python中Django视图(view)的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一个视图函数(类),简称视图,是一个简单的Py ...

  9. Android 视图(View)概述

    视图(View)概述 翻译至 Android.View.View Class Overview,水平有限,敬请谅解. 视图(View)是一个矩形区域,它负责这个区域里的绘制和事件处理.视图类是Andr ...

最新文章

  1. JPG图片EXIF信息提取工具exif
  2. 中国电信线CTF线下选拨writeup
  3. Groovy中的任务的自定义属性设置
  4. android自定义布局实现优惠券效果
  5. 【渝粤题库】广东开放大学 经济学基础 形成性考核
  6. php 逗号编码,php有几种编码
  7. ChaosBlade 发布对 C++ 应用混沌实验的支持
  8. android 继承listview,Android listView 继承ListActivity的用法
  9. 程序员情人节送这些!
  10. js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程
  11. matlab 量化 策略,【策略分享】Matlab量化交易策略源码分享
  12. 返回固定页面的web服务器
  13. Centos7快速安装gcc8.3.1
  14. war 包的解压与打包
  15. STM32入门(二)
  16. Android 实现图片闪烁效果
  17. 塞班系统是如何没落的
  18. 实验报告《私有云搭建》
  19. dockerfile构建一个(python+flask+html)镜像 + 上传到阿里云私有仓库 + 部署到k8s---全过程
  20. Dialect needs to be explicitly supplied as of v4.0.0解决方案

热门文章

  1. linux环境下监控日志的变化命令 tail -f
  2. 同一个Spring-AOP的坑,我一天踩了两次,深坑啊
  3. python【数据结构与算法】计数问题(分治)
  4. 【Java Web后台实验与开发】ServletHTTPRequest笔记
  5. LINUX下UDP实现消息镜像通信,linux环境下基于udp socket简单聊天通信
  6. 实现根据条件删除_Vue源码解析,keep-alive是如何实现缓存的?
  7. python从入门到精通视频百度云资源_python从入门到精通视频(全60集)声音修复版...
  8. Java 生成滑动图片验证码, 阴影, 切块
  9. docker安装wget_Docker: docker pull, wget, curl, git clone 等如何更快?
  10. 西安网络推广教大家如何提高网站抓取量?