更新
我最近修改了一個視圖來發布給它的控制器一個json對象而不是一個formcollection。單元測試MVC 3.0內的UpdateModel方法
爲了得到這個控制器工作的單元測試,我們將formvalue提供程序設置爲一個字典對象,以停止UpdateModel方法拋出nre的方法。
然而,下面的結果單元測試根本不覺得正確的做法。任何深入瞭解如何返工這將不勝感激。
[HttpPost]
public ActionResult ThemeContent(content model)
{
if (ModelState.IsValid)
{
var content = _contentRepository.GetContent(model.id);
if (content == null)
{
content = new content();
UpdateModel(content);
_contentRepository.Add(content);
_contentRepository.Save();
}
else
{
UpdateModel(content);
_contentRepository.Save();
}
return Json(new
{
redirectUrl = Url.Action("index", "success", new {id = content.id}),
isRedirect = true
});
}
string errorMessage = "{";
foreach (var key in ModelState.Keys)
{
var error = ModelState[key].Errors.FirstOrDefault();
if (error != null)
{
if (errorMessage != "{")
{
errorMessage += ",";
}
errorMessage += (char) 34 + "#" + key + (char) 34 + ":" + (char) 34 + error.ErrorMessage + (char) 34;
}
}
errorMessage += "}";
return Json(new
{
Message = errorMessage,
isRedirect = false
});
}
在此先感謝。
我不是很清楚爲什麼你調用UpdateModel,當你已經有所有的值需要從模型綁定到動作參數中的「model」對象。 – 2010-12-06 22:10:08
感謝您指出布拉德。愚蠢的監督,這大大增加了我們測試的複雜性。 – Jesse 2010-12-07 01:12:29