Я сподіваюся, що це запитання дає цікаві відповіді, тому що це мене на деякий час клопіть.
Чи є реальна цінність при тестуванні блоку контролера в 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 на відстані дюйма свого життя?
Я думаю, що моє значення справді полягає в тому, що робити наступні дії видається абсолютно безглуздим і неправильним
[TestMethod]
public void Test_Home_Index()
{
var controller = new HomeController();
var expected = "Index";
var actual = ((ViewResult)controller.Index()).ViewName;
Assert.AreEqual(expected, actual);
}
Очевидно, що я переймаюся цим надзвичайно безглуздим прикладом, але чи має хтось тут мудрість додати?
З нетерпінням чекаю цього ... Дякую.