【问题标题】:Set Session To Null Using MvcContrib TestHelper使用 MvcContrib TestHelper 将会话设置为空
【发布时间】:2010-12-07 16:39:06
【问题描述】:

我的控制器中有一个操作来验证我的会话是否已过期 (== null),如果是,则重定向到我的登录名。我想为此添加一个单元测试,但我不能将 Session 设置为 null 或模拟它。任何人都知道我该怎么做以及测试它是否是个好主意?

这是我的控制器操作:

private InvestigationStep2Model _step2Model
    {
        get
        {
            if (Session == null) return null;
            if (Session["investigationStep2"] == null) Session["investigationStep2"] = new InvestigationStep2Model();
            return (InvestigationStep2Model) Session["investigationStep2"];
        }
        set { Session["investigationStep2"] = value; }
    }

public virtual ActionResult Step2()
    {
        if (_step2Model == null) return RedirectToAction(MVC.Session.Logout());
        ViewData.Model = _step2Model;
        return View();
    }

以及我所有尝试模拟 Session 的测试

[Test]
    public void Step2_RedirectToActionWhenNoSession()
    {
        _builder.InitializeController(_controller);

        Expect.Call(_controller.Session).Repeat.Any().Return(null);
        //_controller.HttpContext.Session.Abandon();//.SetSessionStateBehavior(SessionStateBehavior.Disabled); // .Session..Abandon());// .Stub(b => b.Session).Return(null);

        _mock.ReplayAll();
        var result = _controller.Step2();

        _mock.VerifyAll();
        result.AssertActionRedirect().ToAction<SessionController>(c => c.Logout());
    }

但是没有任何效果...

谢谢!

【问题讨论】:

    标签: unit-testing asp.net-mvc-2 mvccontrib-testhelper


    【解决方案1】:

    我是这样做的:

    [Test]
        public void Step2_RedirectToActionWhenNoSession()
        {
            _builder.InitializeController(_controller);
    
            _controller.HttpContext.BackToRecord();
            _controller.HttpContext.Stub(c => c.Session).Return(null);
            _controller.HttpContext.Replay();
    
            _mock.ReplayAll();
            var result = _controller.Step2();
    
            _mock.VerifyAll();
            result.AssertActionRedirect().ToAction<SessionController>(c => c.Logout());
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多