我正在尝试使用NUnit在ASP.net core 2.2中编写一个非常简单的单元测试。这是Get:
[HttpGet]
public IActionResult Cars()
{
return Ok( new { Cars = new BusinessLayer().GetListOfCars() } );
}
GetListOfCars()
的返回类型为List<Car>
。其中Car
是具有Name
和Model
的类。
这是我的单元测试:
[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>;
答案 0 :(得分:1)
var carlist = result.Value as List<Car>;
无法正常工作,因为您将数据包装在一个匿名对象中。
new { Cars = new BusinessLayer().GetListOfCars() }
使用动力学提取所需的属性
dynamic model = result.Value;
List<Car> carlist = (List<Car>)model.Cars;
答案 1 :(得分:0)
通过使用动态方法提取Nkosi建议的所需属性,似乎存在一个小的缺陷。
您可以尝试使用反射读取数据,如下所示:
var result = (response as OkObjectResult).Value;
var carlist = result.GetType().GetProperty("Cars").GetValue(result,null);
var list = carlist as List<Car>;