获取 OkResult 中的对象列表



我正在尝试使用最小起订量对我的 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()(。

相关内容

  • 没有找到相关文章