Тестирование класса с помощью HttpContext.Current.Session в ASP.NET MVC - PullRequest
5 голосов
/ 25 января 2009

Я добавляю несколько тестов в класс, который использует 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 в конструкторе по умолчанию?

Спасибо

1 Ответ

5 голосов
/ 25 января 2009

Попробуйте, он использовал оболочку IHttpSessionState, которую использует инфраструктура MVC.

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";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...