C # Тестирование модифицированных переменных сеанса - PullRequest
1 голос
/ 01 октября 2011

Сейчас я пытаюсь проверить переменные сеанса. Например я установил:

Session["test"] = "test";

Тогда:

if (blah) { Session["test"] = "foo"; }
else if (testing) { Session["test"] = "foo2"; }

Я бы хотел иметь возможность запускать тесты, чтобы в зависимости от изложенных условий я мог видеть, что переменная Session изменилась соответствующим образом. Я попытался использовать Moq, и я могу создать Mock Session, а затем определить переменную для возврата чего-то конкретного:

controllerContext.Setup(x => x.HttpContext.Session["test"]).Returns("test");

Это не изменится при прохождении теста. Это кажется еще более сложным, если я строго печатаю переменные с помощью оболочки Session, поскольку пытаюсь передать фиктивный сеанс и контекст между контроллерами.

Я прочитал немного о FakeContext и Fake Sessions, в отличие от Mock. Я также немного слышал об использовании делегатов. На самом деле я просто пытаюсь эмулировать то, что происходит, когда код фактически выполняется, и убедиться, что конечный результат - это то, что я ожидаю, и это часто зависит от моих переменных Session. Каков наилучший подход к тестированию их модификации, правильно делается?

1 Ответ

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

Хорошо видеть, что вы использовали Moq, и в этом случае вместо подтверждения значения сеанса вы можете утверждать, пытался ли код установить сеанс.

Вот несколько полезных ссылок:

Модульное тестирование ASP.NET MVC - сеансы

ASP.NET MVC Совет № 12 - Подделка контекста контроллера

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