[英]Getting list of objects in an OkResult
我正在尝试使用Moq对Web服务进行单元测试,并且我进行了以下测试:
[TestMethod()]
public void GetCoursesTest()
{
var response = _coursesController.GetCourses();
var contentResult = response as OkNegotiatedContentResult<List<Course>>;
Assert.AreEqual(contentResult.Content.Count(), _educationCoursesData.Count);
}
在这里, GetCourses()
是:
public IHttpActionResult GetCourses()
{
try
{
return Ok(_entities.Courses.ToList().Select(course => new CourseDTO
{
Id = course.Id,
CrsName = course.CrsName,
CrsHour = course.CrsHour,
CrsDay = course.CrsDay,
CrsMin = course.CrsMin,
Teacher = course.Teacher
}));
}
catch
{
return InternalServerError();
}
}
因此,其结果是对象列表。 但是,当我尝试通过response as OkNegotiatedContentResult<List<Course>>;
将这些对象的列表response as OkNegotiatedContentResult<List<Course>>;
到contentResult
response as OkNegotiatedContentResult<List<Course>>;
, contentResult
只是一个null
。 如何将OkResult中的对象列表读取到可以执行Count()
的变量中?
如果contentResult
在之后为null
var contentResult = response as OkNegotiatedContentResult<List<Course>>;
演员失败。 原因是您早使用.ToList()。 通过使用.Select(...)
您将创建IEnumerable
而不是List
。 试试这个:
return Ok(_entities.Courses.Select(course => new CourseDTO
{
Id = course.Id,
CrsName = course.CrsName,
CrsHour = course.CrsHour,
CrsDay = course.CrsDay,
CrsMin = course.CrsMin,
Teacher = course.Teacher
})ToList());
或者将演员表更改为
OkNegotiatedContentResult<IEnumerable<Course>>;
由于未枚举内容,被测方法未返回OkNegotiatedContentResult<List<Course>>
。 更改预期的返回类型( OkNegotiatedContentResult<IEnumerable<Course>>
),或者在返回其数据之前更新操作以枚举.ToList()
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.