How do you mock the session object collection using Moq

前端 未结 7 663
忘了有多久
忘了有多久 2020-11-28 22:08

I am using shanselmann\'s MvcMockHelper class to mock up some HttpContext stuff using Moq but the issue I am having is being able to assign something to my mocked session ob

7条回答
  •  悲哀的现实
    2020-11-28 22:41

    Using Moq 3.0.308.2 here is an example of my account controller setup in my unit test:

        private AccountController GetAccountController ()
        {
          .. setup mocked services..
    
          var accountController = new AccountController (..mocked services..);
    
          var controllerContext = new Mock ();
          controllerContext.SetupGet(p => p.HttpContext.Session["test"]).Returns("Hello World");
          controllerContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns(_testEmail);
          controllerContext.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);
          controllerContext.SetupGet(p => p.HttpContext.Response.Cookies).Returns(new HttpCookieCollection ());
    
          controllerContext.Setup (p => p.HttpContext.Request.Form.Get ("ReturnUrl")).Returns ("sample-return-url");
          controllerContext.Setup (p => p.HttpContext.Request.Params.Get ("q")).Returns ("sample-search-term");
    
          accountController.ControllerContext = controllerContext.Object;
    
          return accountController;
        }
    

    then within your controller method the following should return "Hello World"

    string test = Session["test"].ToString ();
    

提交回复
热议问题