У нас есть приложение ASP.NET WebForms, которое мы собираемся преобразовать в приложение ASP.NET MVC - одна из причин заключается в том, что мы можем в полной мере воспользоваться преимуществами Unit Testing и TDD.Модульное тестирование приложения ASP.NET MVC 3
В настоящее время наше приложение WebForms активно использует HttpModules. В настоящее время мы обсуждаем, следует ли придерживаться HttpModules или использовать Global Filters (любой совет здесь будет замечательным).
Тем не менее, с моими «MVC-приложениями» «привет мир», я не разработал, как запустить код HttpModule (или действительно Глобальный фильтр), когда запускается Unit Unit.
Возможно, я ошибаюсь, но мне кажется, что мне нужно, чтобы это было частью моего модульного тестирования (интеграционное тестирование), иначе оно не может быть истинным представлением о том, что происходит в моем производственном коде.
Любое руководство было бы очень желанным.
Благодаря
Griff
PS - я добавил следующее после первоначальных ответов на мой вопрос.
Простой выдуманные Use Case
В производстве
- браузер делает запрос для метода контроллера
- HttpModule пожаров (или Global Filter) - это устанавливает статический Guid свойство имеет ценность.
- Метод контроллера принимает это значение Guid и использует его в своей последующей логике
- Правильного результата затем возвращается в браузер
В модульном тестировании
- тест блок вызывает то же самое Метод контроллера
- HttpModule (или глобальный фильтр) не срабатывает - свойство static Guid имеет значение Guid.Empty
- Метод контроллер принимает это значение Guid, но выдает ошибку, потому что это был пустой Guid тест
- устройство не
Мои мысли:
- если контроллер полагается на HttpModule (или Глобальный фильтр) для запуска сначала, тогда HttpModule является зависимостью, и поэтому результаты его действия должны быть обрезаны, чтобы тест был истинным. Модуль Тест.
- Если тест должен включать в себя действие HttpModule (или Глобального фильтра) для запуска, то это будет Интеграция тест (хотя пока неясно, как получить HttpModule или Global Filter для запуска как часть теста интеграции)
- HttpModule (или Global Filter) должен иметь свой собственный набор модульных тестов
Я думаю, что это подход, который я возьму, но если кто-нибудь может подсказать, как я получу интеграции тест (как описано выше) для работы, тогда я был бы очень благодарен.
Проблема, поскольку я вижу, что мой проект TEST становится проектом «запуска» при выполнении моих тестов, поэтому HttpModules (определенные в файле web.config MVC ASP.NET MVC) и глобальные фильтры (определенные в файл global.asax ASP.NET MVC) не будет запущен, потому что файлы web.config и global.asax не будут выполнены. Поэтому остается вопрос: как мне заставить их работать в моем тесте интеграции?
Спасибо всем
Griff
Hi Justin - спасибо за ваш ответ. Я добавил Случай использования к моему оригинальному сообщению, чтобы еще больше объяснить ситуацию - буду признателен за ваши отзывы. Griff – DrGriff