19

我的控制器中有以下代码:

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。有没有更有效的方法?

4

1 回答 1

8

有一种更有效的方法,因为您不需要测试这两行

Assert.IsTrue(result.RouteValues.ContainsKey("action"));
Assert.IsTrue(result.RouteValues.ContainsKey("controller"));

这些是您尚未编写的代码的断言。您必须相信编写该代码的人有自己的单元测试。如果前两行有错误,那么您的两个最终断言将失败。

于 2015-09-14T20:00:18.050 回答