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