この質問がしばらくの間私を悩ませていたので、この質問がいくつかの興味深い答えを与えることを願っています。
ASP.NET MVCでコントローラーを単体テストすることで実際の価値はありますか?
それが意味することは、ほとんどの場合(そして私は天才ではありません)、私のコントローラーメソッドは、そのような最も複雑なものであってもです:
public ActionResult Create(MyModel model)
{
    // start error list
    var errors = new List<string>();
    // check model state based on data annotations
    if(ModelState.IsValid)
    {
        // call a service method
        if(this._myService.CreateNew(model, Request.UserHostAddress, ref errors))
        {
            // all is well, data is saved, 
            // so tell the user they are brilliant
            return View("_Success");
        }
    }
    // add errors to model state
    errors.ForEach(e => ModelState.AddModelError("", e));
    // return view
    return View(model);
}
ほとんどの重労働は、MVCパイプラインまたはサービスライブラリによって行われます。
したがって、尋ねる質問は次のようになります。
- この方法を単体テストすることの価値は何ですか?
- それが上の壊れていないだろうRequest.UserHostAddressとModelStateとNullReferenceExceptionで?これらをモックする必要がありますか?
- このメソッドを再利用可能な「ヘルパー」に屈折させると(おそらく、それを何回行うかを考える必要があります!)、実際にテストしているのはほとんどが「パイプライン」であり、おそらく、Microsoftによってその寿命の1インチ以内にテストされていますか?
私のポイントは本当にあると思う、次のことをすることは全く無意味で間違っているようだ
[TestMethod]
public void Test_Home_Index()
{
    var controller = new HomeController();
    var expected = "Index";
    var actual = ((ViewResult)controller.Index()).ViewName;
    Assert.AreEqual(expected, actual);
}
明らかに私はこの誇張して無意味な例に鈍感ですが、ここに追加する知恵はありますか?
それを楽しみにしています...ありがとう。