Umarım bu soru bazı ilginç cevaplar verir, çünkü bir süre beni rahatsız eden soru.
ASP.NET MVC’de denetleyiciyi test eden birimde gerçek bir değer var mı?
Bununla demek istediğim, çoğu zaman (ve ben deha değilim), denetleyici yöntemlerim, en karmaşıklarında bile böyledir:
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);
}
Ağır yüklerin çoğu MVC boru hattı veya servis kütüphanem tarafından yapılır.
Belki sormanız gereken sorular şunlar olabilir:
- Bu yöntemi test eden birimin değeri ne olurdu?
- NullReferenceException ile birlikte
Request.UserHostAddress
ve kırılmazModelState
mıydı? Bunları alay etmeye çalışmalı mıyım? - eğer bu yöntemi tekrar kullanılabilir bir "yardımcı" ya da (kaç kere yaptığımı düşünürsem iyi olmalı) reddedersem, gerçekten test ettiğimde çoğunlukla "boru hattı" olduğu zaman bile faydalı olacağını denemek isterdim. Muhtemelen, Microsoft tarafından hayatının bir inç içinde test edilmiştir?
Sanırım benim açımdan gerçekten , aşağıdakileri yapmak tamamen anlamsız ve yanlış görünüyor
[TestMethod]
public void Test_Home_Index()
{
var controller = new HomeController();
var expected = "Index";
var actual = ((ViewResult)controller.Index()).ViewName;
Assert.AreEqual(expected, actual);
}
Açıkçası, bu abartılı ve anlamsız bir örnekle çılgına dönüyorum, ancak buraya eklemek için herhangi bir bilgeliği olan var mı?
Bekliyorum ... Teşekkürler.