我有一个Web API控制器,其中有一个类似于以下的方法(截去了不相关部分):
Original Answer可以翻译成"最初的回答"。
[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)
}