Unit testing MVC4和x27中的单元测试HttpStatusCode;System.NullReferenceException';
我试图在MVC4中对HttpStatusCodes进行单元测试,但当控制器尝试在响应时设置状态代码时,我不断得到一个“System.NullReferenceException”,这是有意义的,因为操作是直接调用的。在我的一生中,如果不把它变成一个集成测试,我就无法解决如何去做。一定是有人干的,有什么想法吗?请参阅下面我的现有代码 控制器Unit testing MVC4和x27中的单元测试HttpStatusCode;System.NullReferenceException';,unit-testing,asp.net-mvc-4,nunit,moq,Unit Testing,Asp.net Mvc 4,Nunit,Moq,我试图在MVC4中对HttpStatusCodes进行单元测试,但当控制器尝试在响应时设置状态代码时,我不断得到一个“System.NullReferenceException”,这是有意义的,因为操作是直接调用的。在我的一生中,如果不把它变成一个集成测试,我就无法解决如何去做。一定是有人干的,有什么想法吗?请参阅下面我的现有代码 控制器 public ActionResult Index() { Response.StatusCode = (int)HttpStatusCode.Ser
public ActionResult Index()
{
Response.StatusCode = (int)HttpStatusCode.ServiceUnavailable;
Response.Headers.Add("Retry-After", "120");
return View();
}
测试
[Test]
public void IndexActionShouldReturn503StatusCode()
{
//Given
var controller = new HomeController();
//When
var result = controller.Index() as HttpStatusCodeResult;
//Then
result.StatusCode.Should().Be((int)HttpStatusCode.ServiceUnavailable);
}
注意
要求是一个友好的“站点关闭”页面,因此我需要返回视图和状态代码。您返回的是
ViewResult
,然后尝试在单元测试中将其转换为httpstatuscodesult
。尝试返回HttpStatusCodeResult
而不是视图
public ActionResult Index()
{
Response.Headers.Add("Retry-After", "120");
return new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable);
}
该应用程序的目的是提供一个友好的“站点关闭”页面,该页面生成503,除非我返回HttpStatusCodeResult时出错(或者遗漏了什么,这很可能是错误的),否则我无法提供更友好的页面?@TomRiley你是对的。如果要这样做,可能需要更改单元测试以检查
响应。StatusCode
。但是您可能需要模拟HttpContext,这样您就有了一个要进行单元测试的对象(如果您还没有)