Mvc controller单元测试 Mock Url对象
被测试Action 包含有Url对象的代码:
data = new data
{
title = ds.Name,
icon = "folder",
attr = new { id = "root", href = Url.Action("ManageDSByLevel", new { levelid = firstlevel.ID }), name = ds.Name },
},
在进行单元测试时需要Mock Url对象,以顺利通过测试,以下为Mock Url 代码:
var dsController = new DealerStructureController(dsService.Object, pcService.Object);
dsController.Mapper = mapper.Object; var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
//var session = new Mock<HttpSessionStateBase>();
//var server = new Mock<HttpServerUtilityBase>(); context.Setup(ctx => ctx.Request).Returns(request.Object);
context.Setup(ctx => ctx.Response).Returns(response.Object);
//context.Setup(ctx => ctx.Session).Returns(session.Object);
//context.Setup(ctx => ctx.Server).Returns(server.Object); //request.SetupGet(x => x.ApplicationPath).Returns("/");
//request.SetupGet(x => x.Url).Returns(new Uri("http://localhost/a", UriKind.Absolute));
//request.SetupGet(x => x.ServerVariables).Returns(new NameValueCollection()); //response.Setup(x => x.ApplyAppPathModifier(It.IsAny<string>())).Returns<string>(x => x); //context.SetupGet(x => x.Request).Returns(request.Object);
//context.SetupGet(x => x.Response).Returns(response.Object); var routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
var helper = new UrlHelper(new RequestContext(context.Object, new RouteData()), routes);
dsController.Url = helper;
在这段代码中 Url对象使用了Url.Action方法,所以在mock Url 时只是简单的模拟,如果代码中使用了Urlde其他方法,可把注解的代码恢复使用。
Mvc controller单元测试 Mock Url对象的更多相关文章
- Mvc Controller 单元测试 Mock User.Identity.Name
被测试的Action 包含 User.Identity.Name 代码,在写测试代码需要Mock ControllerContext对象 代码如下: var mock = new Mock<Co ...
- Spring MVC Controller 单元测试
简介 Controller层的单元测试可以使得应用的可靠性得到提升,虽然这使得开发的时间有所增加,有得必失,这里我认为得到的比失去的多很多. Sping MVC3.2版本之后的单元测试方法有所变化,随 ...
- 在Spring MVC Controller中注入HttpServletRequest对象会不会造成线程安全的问题
做法: 1.比如我们在Controller的方法中,通常是直接将HttpServletRequest做为参数,而为了方便节省代码,通常会定义为全局变量,然后使用@Autowire注入. 说明: 1.观 ...
- ZendFramework-2.4 源代码 - 关于MVC - Controller层
// 1.控制器管理器 class ServiceManager implements ServiceLocatorInterface { public function __construct(Co ...
- .net Mvc Controller 接收 Json/post方式 数组 字典 类型 复杂对象
原文地址:http://www.cnblogs.com/fannyatg/archive/2012/04/16/2451611.html ------------------------------- ...
- ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)
ASP.NET MVC 一.获取URL(ASP.NET通用): [1]获取完整url(协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [ ...
- 基于spring与mockito单元测试Mock对象注入
转载:http://www.blogjava.net/qileilove/archive/2014/03/07/410713.html 1.关键词 单元测试.spring.mockito 2.概述 单 ...
- 关于Spring MVC Controller 层的单元测试
关于Spring MVC Controller 层的单元测试 测试准备工作: 1.搭建测试Web环境 2.注入Controller 类 3.编写测试数据 测试数据的文件名一定要与测试类的文件名相同,比 ...
- mvc+webapi 单元测试
1.前言 现在这个项目已经有阶段性的模块完成了,所以就想着对这些模块进行单元测试,以保证项目的代码的质量.首先虽然标题是mvc+webapi实质上我只是对mvc进行的测试.用的时候vs的unit te ...
随机推荐
- HDU 3078 Network LCA
题意:n个点 m个询问,下面一行是n 个点的权值 再下面n-1行是双向的边 然后m个询问:k u v 若k==0,则把u点的权值改为v,否则回答u->v之间最短路经过点的权值中 第k大的值是多 ...
- first blog编程之美-----计算1的个数
根据以下总结写出以下程序,总结来源于网上 感想:得硬着头皮找规律 #include int count1(int n) { int i=1; int count=0 ...
- 设置imageView正方形高宽
private void initWidth() { int screenWidth = ((MyApplication)getApplication()).screenWidth; if(0 == ...
- android 57 QQ登录
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...
- rsyslog 详解3
http://blog.clanzx.net/2013/12/31/rsyslog.html http://www.centosabc.com/archives/601 http://www.cnbl ...
- centos 6 搭建ftp服务器支持匿名读写
转载请注明: 凌云物网智科嵌入式实验室: http://iot-yun.com/ 郭文学<guowenxue@gmail.com> vsftpd在运行时一定要关闭SELinux,否 ...
- phpstorm 快捷方式 (备用)
常用快捷键 设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“eclipse” -> 然后“Copy”一份 ...
- 如果 @s int 把它转成字符,可以这样 cast(@s as varchar)
如果 @s int 把它转成字符,可以这样 cast(@s as varchar)
- oo面向对象原则
1.单一职责原则 一个类,最好只做一件事,只有一个引起他变化的原因否则就应该考虑重构. 2.开放封闭原则 软件实体应该是可扩展的,而不是可修改的.也就是说对扩展开放,对修改封闭.主要体现在两个方面: ...
- Quartz.NET管理类
最近做项目设计到Quartz.NET,写了一个Quartz.NET管理类,在此记录下. public class QuartzManager<T> where T : class,IJob ...