Тестовый докладчик в веб-форме ASP.NET - PullRequest
1 голос
/ 09 марта 2010

Я работаю над приложением ASP.NET WebForm, используя шаблон MVP. Для каждой веб-формы существует класс Presenter, связанный с пользовательским интерфейсом и бизнес-логикой. Однако у меня возникла проблема при написании модульных тестов для докладчиков, так как значения сеансов используются в докладчиках. И во время выполнения модульного теста не существует никакого HTTP-контекста (кстати, я использую nUnit), что делает невозможным написание модульного теста для докладчиков.

Кто-нибудь может объяснить, как провести модульное тестирование этих докладчиков?

Спасибо

Ответы [ 3 ]

1 голос
/ 09 марта 2010

Вы можете изменить свой класс Presenter, чтобы иметь зависимость от HttpContextBase. Как только это будет сделано, вы можете предоставить проверенную версию HttpContext вашему классу докладчика для тестирования. В производственном процессе вы просто предоставляете свойство HttpContext.Current.

1 голос
/ 06 августа 2010

Хм, я бы предложил другой подход. Я думаю, что ваш докладчик не должен знать о HttpContext, PageLifeCycle и т. Д., Потому что вы должны тестировать его изолированно. Поэтому вместо того, чтобы пытаться смоделировать IHttpContext, попробуйте извлечь значения, которые вам нужны в презентаторе (вам не нужен весь объект httpcontext, только некоторые значения из сеанса, куки и т. Д.) И внедрить в презентатор через конструктор презентатора. Теперь вы можете проверить это правильно.

Приветствия

1 голос
/ 09 марта 2010

вы можете или смоделировать или заглушить IHttpContext и позволить вашей инфраструктуре внедрить реальный HttpContext, или вы можете обернуть состояние сеанса, cookie, ... за какой-то интерфейс, или вы можете использовать "Moles" из Pex, интерфейс объяснил здесь http://haacked.com/archive/2007/09/09/ihttpcontext-and-other-interfaces-for-your-duck-typing-benefit.aspx

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