2017-10-04 72 views
0

我想爲我的控制器編寫單元測試。如何測試MVC控制器的響應狀態碼Action

我想檢查操作的響應代碼。例如,Post操作應該返回201,獲得應該返回200等。

但是,Action方法返回IActionResult。我如何獲得ActionResult的響應碼?

//setup 
MyController controller = CreateController<MyController>(); 

//action 
var actionResult = controller.Post(dafXml); 

//assert 
??? 

我不想檢查操作結果的類型,因爲我只關心狀態碼。例如,201可以通過CreatedAtActionCreatedAtRoute或定製ObjectResult實現...

回答

0

FluentAssertions提供了一個優雅的方式來斷言控制器響應代碼。看下面的例子。

// 200 
actionResult.Should().BeOfType<OkObjectResult>() 
    .Which.StatusCode.Should().Be((int)HttpStatusCode.OK); 

// 201 
actionResult.Should().BeOfType<CreatedResult>() 
    .Which.StatusCode.Should().Be((int)HttpStatusCode.Created); 

// 500 
actionResult.Should().BeOfType<ObjectResult>() 
    .Which.StatusCode.Should().Be((int)HttpStatusCode.InternalServerError);