asp.net mvc3对HttPost来的表单使用moq进行单元测试
作者:网络转载 发布时间:[ 2013/7/29 13:59:53 ] 推荐标签:
以下对HttpPost来的表单进行处理的方法进行单元测试。
以下为方法的源代码
<SPAN style="WHITE-SPACE: pre"> </SPAN>[HttpPost]
public ActionResult NewName()
{
ViewBag.Name = Request.Form["Name"];
return View();
}
在提交来的View里有一个@Html.Editor("Name")的元素
下面是单元测试代码,使用moq进行模拟对象
<PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN>[TestMethod()]
public void NewNameTest()
{</PRE><PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN> // 1,准备Form,每个项要一一地进行列举
FormCollection form = new FormCollection();
form["Name"] = "zhong";
</PRE><PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN> // 2,mock Request对象
var mockRequest = new Mock<HttpRequestBase>();
mockRequest.SetupGet(m => m.Form).Returns(form);<SPAN style="WHITE-SPACE: pre"> </SPAN>// 调用Request中Form的getter时,返回我们准备的form
</PRE><PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN> // 3,mock HttpContext对象
var mockContext = new Mock<HttpContextBase>();
mockContext.SetupGet(m => m.Request).Returns(mockRequest.Object); // 调用HttpContext中Request时,返回模拟的Request对象
</PRE><PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN> // 4,实例化Controller对象
HomeController target = new HomeController();
target.ControllerContext = new ControllerContext(mockContext.Object, new RouteData(), target); // 将模拟HttpContext对象传给Controller
// 5,执行要测试的方法
ViewResult actual;
actual = target.NewName() as ViewResult;
</PRE><PRE class=html name="code"><SPAN style="WHITE-SPACE: pre"> </SPAN> // 6,断言测试
Assert.AreEqual("zhong", actual.ViewBag.Name);
}</PRE><BR>
<BR>
<P></P>
<PRE></PRE>
<BR>
<P></P>
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11