使用RazorGenerator对视图View进行单元测试
在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进行单元测试相关推荐
- Asp.net MVC中使用Razor Generator实现View的单元测试
Asp.net MVC 3 应用程序中,单元测试对项目的质量意义重大.除了对Model,Controller进行单元测试,有时还需要对View也进行.对View进行测试目前并不容易做,大多数情况下可能 ...
- Oracle 学习笔记 11 -- 视图 (VIEW)
本次必须学习一个全新的概念-- 视图 (VIEW).在前面的笔记中曾提到过,数据对象包含:表.视图.序列.索引和同义词.前面的笔记都是对表的想剖析,那么本次笔记就对视图的世界进行深入的剖析. 视图是通 ...
- 3.5 《数据库系统概论》之基本表更新(INSERT、UPDATE、ALTER、DELETE)与视图VIEW(定义、查询、更新)
文章目录 0.前言 1.思维导图 2.基本表更新---TABLE (1)插入数据---INSERT INTO ① 插入元组 ② 插入子查询结果 (2)修改数据---UPDATE SET ① 修改某一个 ...
- MySQL笔记(六)视图 view
这是我在学习Mysql之路上做的笔记,今天将它粘出来.这一篇主要是Mysq的视图 view.有错误的欢迎大家指出... 数据库的创建参考我的另一篇博客 https://blog.csdn.net/cs ...
- 使用mvc时,在视图view中使用强类型视图,在web.config文件中添加命名空间namespace的引用不起作用,解决方法...
这是view中的model代码: @model t_user_info 这是web.config配置文件只的代码: <namespaces><add namespace=" ...
- mysqldump导出数据库视图_mysql中如何用mysqldump批量如何导出视图view啊?
你的位置: 问答吧 -> MySQL -> 问题详情 mysql中如何用mysqldump批量如何导出视图view啊? mysql中如何用mysqldump批量如何导出视图view啊? 我 ...
- dns日志级别 linux,linux下DNS服务器视图view及日志系统详解
linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...
- django批量修改table_python中Django视图(view)的详解(附示例)
本篇文章给大家带来的内容是关于python中Django视图(view)的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一个视图函数(类),简称视图,是一个简单的Py ...
- Android 视图(View)概述
视图(View)概述 翻译至 Android.View.View Class Overview,水平有限,敬请谅解. 视图(View)是一个矩形区域,它负责这个区域里的绘制和事件处理.视图类是Andr ...
最新文章
- JPG图片EXIF信息提取工具exif
- 中国电信线CTF线下选拨writeup
- Groovy中的任务的自定义属性设置
- android自定义布局实现优惠券效果
- 【渝粤题库】广东开放大学 经济学基础 形成性考核
- php 逗号编码,php有几种编码
- ChaosBlade 发布对 C++ 应用混沌实验的支持
- android 继承listview,Android listView 继承ListActivity的用法
- 程序员情人节送这些!
- js并发上传文件到不同服务器,simple-uploader.js 功能强大的上传组件 - 文章教程
- matlab 量化 策略,【策略分享】Matlab量化交易策略源码分享
- 返回固定页面的web服务器
- Centos7快速安装gcc8.3.1
- war 包的解压与打包
- STM32入门(二)
- Android 实现图片闪烁效果
- 塞班系统是如何没落的
- 实验报告《私有云搭建》
- dockerfile构建一个(python+flask+html)镜像 + 上传到阿里云私有仓库 + 部署到k8s---全过程
- Dialect needs to be explicitly supplied as of v4.0.0解决方案
热门文章
- linux环境下监控日志的变化命令 tail -f
- 同一个Spring-AOP的坑,我一天踩了两次,深坑啊
- python【数据结构与算法】计数问题(分治)
- 【Java Web后台实验与开发】ServletHTTPRequest笔记
- LINUX下UDP实现消息镜像通信,linux环境下基于udp socket简单聊天通信
- 实现根据条件删除_Vue源码解析,keep-alive是如何实现缓存的?
- python从入门到精通视频百度云资源_python从入门到精通视频(全60集)声音修复版...
- Java 生成滑动图片验证码, 阴影, 切块
- docker安装wget_Docker: docker pull, wget, curl, git clone 等如何更快?
- 西安网络推广教大家如何提高网站抓取量?