Asp.net mvc 4 多重定向操作的单元测试
我是这方面的新手,我需要这段代码的帮助。它正在使用MVC4.0,但需要调用数据库,我不知道如何开始创建单元测试,如果需要打开连接,希望您能帮助我 代码如下:Asp.net mvc 4 多重定向操作的单元测试,asp.net-mvc-4,unit-testing,c#-4.0,Asp.net Mvc 4,Unit Testing,C# 4.0,我是这方面的新手,我需要这段代码的帮助。它正在使用MVC4.0,但需要调用数据库,我不知道如何开始创建单元测试,如果需要打开连接,希望您能帮助我 代码如下: [HttpPost] public ActionResult Add(User user, IEnumerable<int> Groups) { HttpCookie cookie = Request.Cookies.Get(SecurityManager.COOKIENAME);
[HttpPost]
public ActionResult Add(User user, IEnumerable<int> Groups)
{
HttpCookie cookie = Request.Cookies.Get(SecurityManager.COOKIENAME);
if (cookie != null)
{
if (SecurityManager.HasPermission(int.Parse(cookie.Values.Get("Id")),(int)PermissionEnum.AddUser))
{
List<Group> gs = new List<Group>();
if (Groups != null)
{
foreach (int g in Groups)
{
Group gr = GroupManager.getGroup(g);
gs.Add(gr);
}
}
user.Groups = gs;
if (UserManager.addUserEmployee(user))
{
return RedirectToAction("Index");
}
else
{
ViewBag.groups = new MultiSelectList(
GroupManager.getMyGroups(int.Parse(cookie.Values.Get("Id"))),"Id", "Name", Groups);
ModelState.AddModelError("Error", "Error saving the user.");
return View(user);
}
}
else
{
return RedirectToAction("NoPermission", "Home");
}
}
else
{
return RedirectToAction("Logout", "Home");
}
}
[HttpPost]
公共操作结果添加(用户、IEnumerable组)
{
HttpCookie cookie=Request.Cookies.Get(SecurityManager.COOKIENAME);
if(cookie!=null)
{
if(SecurityManager.HasPermission(int.Parse(cookie.Values.Get(“Id”),(int)PermissionEnum.AddUser))
{
List gs=新列表();
如果(组!=null)
{
foreach(分组中的int g)
{
groupgr=GroupManager.getGroup(g);
一般事务.增补(gr);
}
}
user.Groups=gs;
if(UserManager.addUserEmployee(用户))
{
返回操作(“索引”);
}
其他的
{
ViewBag.groups=新的多选列表(
getMyGroups(int.Parse(cookie.Values.Get(“Id”),“Id”,“Name”,Groups);
AddModelError(“错误”,“保存用户时出错”);
返回视图(用户);
}
}
其他的
{
返回重定向到操作(“无许可”、“主页”);
}
}
其他的
{
返回重定向操作(“注销”、“主页”);
}
}
由于我有多个重定向操作,如何测试重定向操作是什么?要测试重定向操作结果,只需将结果强制转换为重定向路由结果,如下所示:
// test case 1:
RedirectToRouteResult result = controller.AddUser(user, groups) as RedirectToRouteResult;
Assert.Equal("NoPermission", result.RouteValues["action"]);
Assert.Equal("Home", result.RouteValues["controller"]);
// test case 2:
RedirectToRouteResult result = controller.AddUser(user, groups) as RedirectToRouteResult;
Assert.Equal("Logout", result.RouteValues["action"]);
Assert.Equal("Home", result.RouteValues["controller"]);
数据库连接呢?没关系吗?嘿@blorkfish,当我添加结果时。RouteValues[“action”];显示此错误无法对“system.web.routing.routevaluedictionary”类型的表达式应用索引。您知道原因吗?