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 つのアサートが必要です。より効率的な方法はありますか?

4

1 に答える 1

8

これらの 2 行をテストする必要がないため、より効率的な方法があります。

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

これらは、あなたが書いていないコードに対するアサーションです。そのコードを書く人が独自の単体テストを持っていることを信頼する必要があります。予想に反して最初の 2 行に誤りがある場合、最後の 2 つのアサーションは失敗します。

于 2015-09-14T20:00:18.050 に答える