【问题标题】:ASP.NET MVC MOQ - Modifed public ActionResult LogOn to include Session Object - Unit Test FailingASP.NET MVC MOQ - 修改公共 ActionResult LogOn 以包括会话对象 - 单元测试失败
【发布时间】:2011-04-23 02:03:02
【问题描述】:

我对单元测试和 MOQ 等很陌生。我已修改 public ActionResult LogOn(LogOnModel model) Action 以包括 Session["UserFullName"] 用于记录目的。

很遗憾,单元测试因未为 Session["UserFullName"] 设置对象引用而失败。

谁能告诉我如何通过在单元测试中修改GetAccountController() 方法来使用最小起订量来解决这个问题?

问候。

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案1】:

    通过 HttpContextBase 可以使用 HttpSessionStateBase。您可以通过 ControllerContext 设置 HttpContextBase。这就是我使用 RhinoMocks 的方法。

     var httpContext = MockRepository.GenerateMock<HttpContextBase>();
     var session = MockRepository.GenerateMock<HttpSessionStateBase>();
    
     httpContext.Expect( c => c.Session ).Return( session ).Repeat.AtLeastOnce();
     session.Expect( s => s["UserFullName"] ).Return( "John Q. User" );
    
     var controller = GetAccountController();
     controller.ControllerContext = new ControllerContext( httpContext, new RouteData(), controller );
    
     ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-26
      • 2021-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多