У меня есть контроллер веб-API с методом, подобным (усеченные нерелевантные биты):
[HttpGet]
public IHttpActionResult Order(int orderId) {
// ...
var response = new OrderResponse {
Data = orderData,
Message = message,
};
return Json(response);
}
У меня есть тест, который делает утверждение о значении ожидаемого JsonResult<OrderResponse>.Content
.
Так как интерфейс IHttpActionResult
не объявляет Content
, я в настоящее время преобразую результат в модульном тесте в JsonResult
. Однако для этого требуется, чтобы мой тест знал, как возврат реализован в моем контроллере, и я хотел бы добиться более слабой связи, если это возможно, чтобы мои тесты не прерывались при изменении реализации ответа.
[TestCase(-1, "The requested order (-1) was not found.")]
public void Test_Returns_NotFound_For_NonExistent_OrderId(int orderId, string expected) {
var sut = new OrderController()
// ...
var result = sut.Order(orderId);
// I am doing this to get access to `Content`:
var materializedResult = result as JsonResult<OrderResponse>;
expected.Should().BeEquivalentTo(materializedResult.Content.Message)
}