【问题标题】:Testing a class with HttpContext.Current.Session in ASP.NET MVC在 ASP.NET MVC 中使用 HttpContext.Current.Session 测试一个类
【发布时间】:2009-01-24 23:02:32
【问题描述】:

我正在向内部使用 HttpContext.Current.Session 的类添加一些测试,并且我们正在移植到 ASP.NET MVC。我的班级是这样的:

class Foo
{
    public void foo()
    {
        HttpContext.Current.Session["foo"] = "foo";
    }
}

我想改成这样:

class Foo
{
    IHttpSessionState session;

    public Foo() : this(HttpContext.Current.Session) {}

    public Foo(IHttpSessionState session)
    {
        m_session = session;
    }

    public void foo()
    {
        m_session["foo"] = "foo";
    }
}

问题在于默认构造函数。我无法传递旧类,因为它们没有实现新的 ASP.NET MVC 接口。

有没有办法在默认构造函数中获取实现IHttpSessionState的实例?

谢谢

【问题讨论】:

    标签: .net asp.net-mvc testing session


    【解决方案1】:

    试试这个,它使用了 MVC 框架使用的 IHttpSessionState 包装器。

    class Foo
    {
        // member variable set by constructor
        IHttpSessionState m_session;
    
        // if no session is passed it attempts to create a new session state wrapper from the current session
        public Foo() : this(new HttpSessionStateWrapper(HttpContext.Current.Session)) {}
    
        public Foo(IHttpSessionState session)
        {
            m_session = session;
        }
    
        public void foo()
        {
            m_session["foo"] = "foo";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-06
      • 2012-03-26
      • 2010-09-21
      • 2010-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多