繁体   English   中英

在OkResult中获取对象列表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM