我有一個MVC3內的控制器,如果出現問題,需要返回響應代碼500。我通過返回一個視圖對象並將http響應代碼設置爲等於500(我已經在螢火蟲中檢查過,並且所有工作都很好)來做到這一點。MVC3單元測試響應代碼
public ActionResult http500()
{
ControllerContext.HttpContext.Response.StatusCode = 500;
ControllerContext.HttpContext.Response.StatusDescription = "An error occurred whilst processing your request.";
return View();
}
我現在的問題是我需要能夠編寫一個單元測試,檢查響應代碼。我曾嘗試以幾種不同的方式通過ViewResult對象和Controller上下文訪問響應代碼。
兩種方法都不能給我我在控制器中設置的響應代碼。
[TestMethod()]
public void http500Test()
{
var controller = new ErrorController();
controller.ControllerContext = new ControllerContext(FakeHttpObject(), new RouteData(), controller);
ViewResult actual = controller.http500() as ViewResult;
Assert.AreEqual(controller.ControllerContext.HttpContext.Response.StatusCode, 500);
}
我該如何去從控制器獲取響應代碼500,或者這是更多的集成測試的事情。
我喜歡這種方法,但問題很簡單,如果一個控制器動作同時返回一個狀態碼和一個模型視圖,是否有一個sens可以用模式來模擬狀態碼響應和視圖/模型結果嗎?我正在努力想出一個明智的選擇。 – dougajmcdonald 2013-10-13 09:49:46
好問題@dougajmcdonald。你有答案嗎? – richardwhatever 2017-09-05 12:25:38