当我调试控制器索引方法时,它返回一个空模型,我做错了什么? 我正在使用Daniel Cazzulino和xUnit的Moq
以下是我的控制器代码:
TeacherController:个
public class TeacherController : Controller
{
private IClassScheduleUnitOfWork _classScheduleUnitOfWork { get; set; }
public TeacherController(IClassScheduleUnitOfWork classScheduleUnitOfWork)
{
_classScheduleUnitOfWork = classScheduleUnitOfWork;
}
public ViewResult Index()
{
var options = new QueryOptions<Teacher> {
OrderBy = t => t.LastName
};
IEnumerable<Teacher> list = _classScheduleUnitOfWork.teachers.List(options);
return View("Index", list);
}
}
Here is my Unit test controller code:个
public class TeacherControllerTests
{
private readonly Mock<IClassScheduleUnitOfWork> _mock;
public TeacherControllerTests()
{
_mock = new Mock<IClassScheduleUnitOfWork>();
}
[Fact]
public void IndexActionMethod_ReturnsAViewResult()
{
var options = new QueryOptions<Teacher>
{
OrderBy = t => t.LastName
};
IEnumerable<Teacher> teachersList = GetAllTeachers();
_mock.Setup(x =>x.teachers.List(options))
.Returns(teachersList);
var controller = new TeacherController(_mock.Object);
//act
var result = controller.Index();
var actualData = (IEnumerable<Teacher>?)result?.ViewData.Model;
Assert.Equal(5, actualData?.Count());
}
private IEnumerable<Teacher> GetAllTeachers()
{
IEnumerable<Teacher> teachers = new List<Teacher>()
{
new Teacher { TeacherId = 1, FirstName = "Anne", LastName = "Sullivan" },
new Teacher { TeacherId = 2, FirstName = "Maria", LastName = "Montessori" },
new Teacher { TeacherId = 3, FirstName = "Martin Luther", LastName = "King" },
new Teacher { TeacherId = 4, FirstName = "", LastName = "Aristotle" },
new Teacher { TeacherId = 5, FirstName = "Jaime", LastName = "Escalante" }
};
teachers = teachers.OrderBy(t => t.LastName).ToList();
return teachers;
}
}
下面是IClassScheduleUnitOfWork的定义
public interface IClassScheduleUnitOfWork
{
public IRepository<Teacher> teachers { get; set; }
public IRepository<Class> classes { get; set; }
public IRepository<Day> days { get; set; }
public void Save();
}
以下是IRepository代码:
public interface IRepository<T> where T : class
{
IEnumerable<T> List(QueryOptions<T> options);
T? Get(int id);
T? Get(QueryOptions<T> queryOptions);
void Insert(T entity);
void Update(T entity);
void Delete(T entity);
void Save();
}