我正在尝试使用最小起订量对我的 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();
}
}
所以它的结果是一个obejcts列表。但是,当我尝试通过response as OkNegotiatedContentResult<List<Course>>;
将这些对象的列表抓取到contentResult
中时,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()
(。