无法读取单元测试中的响应内容

Unable to read response Content in Unit Test

我正在尝试使用 NUnit 在 ASP.net 核心 2.2 中编写一个非常简单的单元测试。这是获取:

[HttpGet]
public IActionResult Cars()
{           
    return Ok( new { Cars = new BusinessLayer().GetListOfCars() } );
}

GetListOfCars() 的 return 类型是 List<Car>。其中 Car 是 class 与 NameModel.

这是我的单元测试:

[Test]
public void CarControllerTest_GetAll()
{
    CarsController myController = new CarsController();

    var response = myController.Cars();

    var result = response as OkObjectResult;

    Assert.AreEqual(StatusCodes.Status200OK, result.StatusCode);
}

以上测试工作正常,但我如何读取响应的内容,因为我还需要验证记录数。

我已经试过了,但没有用。

var carlist = result.Value as List<Car>;
var carlist = result.Value as List<Car>;

无效,因为您将数据包装在匿名对象中。

new { Cars = new BusinessLayer().GetListOfCars() }

使用动态提取想要的属性

dynamic model = result.Value;
List<Car> carlist = (List<Car>)model.Cars;

使用 dynamic 提取 Nkosi 建议的所需 属性 似乎存在一个小缺陷。

您可以尝试使用反射来读取如下数据:

var result = (response as OkObjectResult).Value;

var carlist = result.GetType().GetProperty("Cars").GetValue(result,null);
var list = carlist as List<Car>;