Модульное тестирование приложения ASP.NET MVC - переменные сеанса - PullRequest
0 голосов
/ 04 октября 2011

Мне нужно создать стратегию модульного тестирования для моего приложения. В моем приложении ASP.NET MVC я буду использовать сессию, теперь мне нужно знать, как выполнить модульное тестирование моего действия, использующего сеанс.

1 Ответ

2 голосов
/ 04 октября 2011

Если вам нужно смоделировать сеанс, вы делаете это неправильно :) Часть паттернов MVC заключается в том, что методы действия не должны иметь никаких других зависимостей, кроме параметров.Поэтому, если вам нужен сеанс, попробуйте «обернуть» этот объект и использовать привязку модели (ваше связывание пользовательской модели, привязку не из данных POST, а из сеанса).

Примерно так:

public class ProfileModelBinder : IModelBinder
{
    public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        if (bindingContext.Model != null)
            throw new InvalidOperationException("Cannot update instances");

        Profile p = (Profile)controllerContext.HttpContext.Session[BaseController.profileSessionKey];
        if (p == null)
        {
            p = new Profile();
            controllerContext.HttpContext.Session[BaseController.profileSessionKey] = p;
        }
        return p;
    }
}

не забудьте зарегистрировать его при запуске приложения, и чем вы можете использовать его следующим образом:

public ActionResult MyAction(Profile currentProfile)
{
    // do whatever..
}

хорошо, полностью тестируемый, наслаждайтесь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...