Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing MVC4和x27中的单元测试HttpStatusCode;System.NullReferenceException';_Unit Testing_Asp.net Mvc 4_Nunit_Moq - Fatal编程技术网

Unit testing MVC4和x27中的单元测试HttpStatusCode;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

我试图在MVC4中对HttpStatusCodes进行单元测试,但当控制器尝试在响应时设置状态代码时,我不断得到一个“System.NullReferenceException”,这是有意义的,因为操作是直接调用的。在我的一生中,如果不把它变成一个集成测试,我就无法解决如何去做。一定是有人干的,有什么想法吗?请参阅下面我的现有代码

控制器

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,这样您就有了一个要进行单元测试的对象(如果您还没有)