Тестирование с помощью MOQ и Session State Wrapper - PullRequest
0 голосов
/ 29 сентября 2011

Я использую оболочку Session, как написано ниже.У меня проблема в том, что при запуске тестов попытка не работает, и она идет на улов, поэтому переменные сеанса никогда не устанавливаются.Я использую Moq для создания фиктивного состояния Session для моего фиктивного контекста.Если я создаю переменную, такую ​​как:

Session["variable"] = "something";

, которая работает нормально и сохраняется до конца теста.Все созданное для меня в обертке нет.Поскольку сессия каким-то образом сохраняется, моя теория заключается в том, что мне нужно выяснить, где она находится, а затем поместить ее в свой улов.Я не знаю, как это сделать, хотя.открытый класс MySession {// закрытый конструктор private MySession () {id = new Random (). Next (100000);}

    // Gets the current session.
    public static MySession Current
    {
        get
        {                
            MySession session = new MySession();
            try
            {
                session =
                (MySession)HttpContext.Current.Session["__MySession__"];
            }
            catch
            {
                //Catch nothing
            }
            if (session == null)
            {
                session = new MySession();
                HttpContext.Current.Session["__MySession__"] = session;
            }
            return session;
        }
    }

    // **** add your session properties here, e.g like this:
    public int id { get; set; }

1 Ответ

2 голосов
/ 30 сентября 2011

Я чувствую, что у вас неправильный конец флешки в том, как вы создали свою сессионную оболочку.Оболочка сеанса обычно означает, что вы создаете класс, который в рабочем коде передает все вызовы реальному сеансу.В модульных тестах он не имеет реального сеанса внутри и может быть фиктивным объектом.Вашему классу MySession всегда нужен реальный сеанс, поэтому любой тест, использующий тест, не будет настоящим модульным тестом.

Вам может не потребоваться накатывать свой собственный тест, в System.Web.Abstractions вы можете попробовать HttpSessionStateWrapper.

...