簡體   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