我正在尝试在 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);
}
注意 要求是友好的“站点关闭”页面,因此我需要返回视图和状态代码。