使用MOq进行MVC控制器测试

时间:2014-10-08 12:46:38

标签: asp.net-mvc asp.net-mvc-4 unit-testing moq

我想用Moq测试给定的方法。如何让我的控制器使用moq对象?正在控制器方法内创建新对象。其中一个类是datacontext,另一个类也是具体类。在为这些类alslo创建模拟时遇到麻烦。

//My Controller class action method  
  public ActionResult GetRelatedCourses(int stuId)
                {
                    if (Request.Cookies["RememberUsername"] != null)
                    {
                        if (System.Web.HttpContext.Current.Cache.Get(userName) == null)
                        {
                            CacheUtil.UpdateCache(userName);
                        }
                        Dictionary<string, int> sectionsCourses = (Dictionary<string, int>)System.Web.HttpContext.Current.Cache.Get(userName);
                        if (sectionsForums.ContainsValue(stuId))
                        {
                            var contextWrapper = new DataContextWrapper(dataContext);
                            var courseRepository = new CourseRepository(contextWrapper);
                            bool Student_Exists = StudentExists(stuId);
                            if (Student_Exists)
                            {
                                IEnumerable<Course> course = courseRepository.GetRelatedCourses(stuId);
                                var UserProfiles = contextWrapper.dataContext.usp_GetUserProfilesByStudentID(stuId).ToList();
                                ViewBag.UserProfiles = UserProfiles;
                                if (course.Count() == 0)
                                {
                                    ViewBag.ErrorMessage = "No courses available.";
                                }
                                return View(courses);
                            }
                            return View("NoStudentExists");
                        }
                    }
                    return View("NoAccess");
                }

1 个答案:

答案 0 :(得分:1)

你需要使用依赖注入和像Ninject这样的好IoC。如果您想进行单元测试,那么在方法中实例化数据对象是不行的。