我有一个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