【发布时间】:2013-07-26 11:08:14
【问题描述】:
我的控制器中有以下代码:
public class MyController : BaseController
{
public ActionResult MyMethod()
{
...
return RedirectToAction("Index", "Dashboard");
}
}
我想对此重定向 (RedirectToRouteResult) 进行单元测试。 我是这样做的:
Assert.IsTrue(result.RouteValues.ContainsKey("action"));
Assert.IsTrue(result.RouteValues.ContainsKey("controller"));
Assert.AreEqual("Index", result.RouteValues["action"].ToString());
Assert.AreEqual("Dashboard", result.RouteValues["controller"].ToString());
所以我需要四个断言来测试我的 RedirectToRouteResult。 有没有更有效的方法?
【问题讨论】:
-
id 还有 assert.instanceoftype 因为你有它返回 actionresult
-
是的,我是这样做的:RedirectToRouteResult result = (RedirectToRouteResult)controller.Captcha(loginUseraccount);如果不是 RedirectToRouteResult 则抛出异常并且测试失败。
-
我知道通常不赞成多个断言,但我使用的原则是您正在测试一个“事物”。在这种情况下,您符合总体思路。
标签: asp.net-mvc asp.net-mvc-3 unit-testing redirecttoaction redirecttoroute