2014-10-08 128 views
0

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

//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"); 
       } 
+0

@Patrick Quirk:有什么建议吗? – user3527975 2014-10-13 23:53:33

回答

1

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

+0

问题在于代码已经存在了。我必须写测试。除了去改变代码之外别无他法吗? – user3527975 2014-10-14 01:55:12