0

我正在尝试在 MVC4 中对 HttpStatusCodes 进行单元测试,但是当控制器尝试在 Response 上设置状态代码时,我不断收到“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);
}

注意 要求是友好的“站点关闭”页面,因此我需要返回视图和状态代码。

4

1 回答 1

2

您正在返回 a ViewResult,然后尝试将其转换为 aHttpStatusCodeResult在您的单元测试中。尝试返回 aHttpStatusCodeResult而不是视图。

public ActionResult Index()
{
    Response.Headers.Add("Retry-After", "120");
    return new HttpStatusCodeResult(HttpStatusCode.ServiceUnavailable);
}
于 2013-08-06T14:37:07.467 回答