У меня есть контроллер в MVC3, который должен вернуть код ответа 500, если что-то пойдет не так. Я делаю это, возвращая объект вида и устанавливая код ответа http равным 500 (я проверил это в firebug, и все работает отлично).
public ActionResult http500()
{
ControllerContext.HttpContext.Response.StatusCode = 500;
ControllerContext.HttpContext.Response.StatusDescription = "An error occurred whilst processing your request.";
return View();
}
Теперь у меня есть проблема: мне нужно написать unit test, который проверяет код ответа. Я попытался получить доступ к коду ответа несколькими разными способами как через объект ViewResult, так и контекст контроллера.
Ни один из способов не дает мне код ответа, который я установил в контроллере.
[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 от контроллера или это больше связано с тестированием интеграции.