【发布时间】:2012-03-26 12:01:23
【问题描述】:
我在 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();
}
我现在遇到的问题是我需要能够编写一个检查响应代码的单元测试。我已经尝试通过 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,或者这更像是一个集成测试。
【问题讨论】:
标签: asp.net-mvc-3 unit-testing moq