【问题标题】:MVC Controller test using MOq使用 MOq 的 MVC 控制器测试
【发布时间】:2014-12-03 03:13:54
【问题描述】:

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

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

【问题讨论】:

  • @Patrick Quirk:有什么建议吗?

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


【解决方案1】:

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

【讨论】:

  • 问题是代码已经存在了。我必须编写测试。除了去改代码别无他法?
猜你喜欢
  • 1970-01-01
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多