2009-05-15 3 views
1

Я нахожу, что общая точка обрыва в нашем Mvc установки, когда контроллер возвращаетЕдиничное тестирование asp.net mvc - Можно просмотреть просмотр?

return View(); 

или что-то, и viewengine не может найти вид.

Я хочу, чтобы иметь возможность тестировать мои контроллеры, а затем запускать ExecuteResult в результирующем ViewResult, но основной объект ViewEngine привязан к виртуальным каталогам, и я не могу понять, как его протестировать.

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

Я не могу найти слишком много об этом в сети, и мне интересно, как «testable» asp.net mvc на самом деле.

ответ

1

Я думаю, ваша проблема в том, что вы пытаетесь проверить слишком много.

Не видя кода его немного сложно, но некоторые начальные отправные точки:

1) Отделить контроллер из ваших виртуальных каталогов - контроллер должен быть изолирован и не зависят от базовой установки веб-серверов. Что вы получаете через это?

Ваш контроллер вернет ViewResult, у этого должна быть прикреплена ваша модель, которую вы можете использовать для проверки правильности данных, передаваемых вашему представлению. Использование stubs \ mocks и dependency injection для проверки правильности правильного подключения к базовым службам, таким как репозиторий базы данных.

У вас есть отдельный набор интеграционных тестов для реализации ваших репозиториев.

2) Используйте веб-платформу тестирования, такую ​​как Watin, чтобы проверить, что представление отображается так, как ожидалось. Это позволит вам взаимодействовать с веб-страницей и HTML dom, чтобы проверить, работает ли она так, как ожидалось. Проверяйте свои контроллеры с помощью модульных тестов. Два отдельных теста для двух разных слоев.

Целью модульного тестирования является сохранение ваших тестов и кода как можно более изолированным.

Смежные вопросы