【发布时间】:2016-04-26 04:12:42
【问题描述】:
我有一个方法可以根据这样的属性对集合进行排序:
public List<Student> GetAllStudents()
{
return _studentCatalogContext.Student.Where(x => (x.Course != 2 && x.Course != 6))
.OrderByDescending(x => x.EnrollDateTime).ToList();
}
因此,在这种情况下,我们的想法是让最近注册的学生优先。
由于方法调用的结果将是一个带有最新注册的排序列表,所以我首先编写了一个这样的测试:
[TestMethod]
public void Calling_GetAllStudents_ReturnsSortedListOfStudents()
{
var studentsList = new List<Student> {
new Student {
Id = "123",
EnrollTime = "02/22/16 14:06:56 PM",
Course = 1
},
new Student {
Id = "456",
EnrollTime = "03/30/16 12:50:38 PM",
Course = 3
}
};
_studnentRepository.Setup(x=>x.GetAllStudents()).Returns(studentsList);
Assert.AreEqual("02/22/16 14:06:56 PM", studentsList[0].EnrollTime);
}
有人建议此测试无效,因为它设置了一个值,然后对其进行断言。
在这种情况下我该如何编写正确的单元测试?
【问题讨论】:
-
在您的情况下,您将不得不 mock
_studentCatalogContext,这很可能是DbContext对吧?有可能:stackoverflow.com/questions/7609430/how-to-mock-dbcontext
标签: c# unit-testing mocking moq