0
我要測試的「項目」對象中的數據之前將其重定向到另一個動作。MVC MOQ單元測試RedirecToAction前的對象()
public ActionResult WebPageEdit(WebPage item, FormCollection form)
{
if (ModelState.IsValid)
{
item.Description = Utils.CrossSiteScriptingAttackCheck(item.Description);
item.Content = Utils.CrossSiteScriptingAttackCheck(item.Content);
item.Title = item.Title.Trim();
item.DateUpdated = DateTime.Now;
// Other logic stuff here
webPagesRepository.Save(item);
return RedirectToAction("WebPageList");
}
這裏是我的測試方法:
[Test]
public void Admin_WebPageEdit_Save()
{
var controller = new AdminController();
controller.webPagesRepository = DataMock.WebPageDataInit();
controller.categoriesRepository = DataMock.WebPageCategoryDataInit();
FormCollection form = DataMock.CreateWebPageFormCollection();
RedirectToRouteResult actionResult = (RedirectToRouteResult)controller.WebPageEdit(webPagesRepository.Get(1), form);
Assert.IsNotNull(actionResult);
Assert.AreEqual("WebPageList", actionResult.RouteValues["action"]);
var item = ((ViewResult)controller.WebPageEdit(webPagesRepository.Get(1), form)).ViewData.Model as WebPage;
Assert.NotNull(item);
Assert.AreEqual(2, item.CategoryID);
}
它沒有在這一行:
var item = ((ViewResult)controller.WebPageEdit(webPagesRepository.Get(1), form)).ViewData.Model as WebPage;
我在想有沒有在它之前測試「項目」對象的任何方式重定向到其他操作?
請編輯您的問題,包括:1:代碼可以編譯可能(不是WebPageEdit的所有代碼路徑返回一個值)。 2:你收到的錯誤的描述。 –