Модульное тестирование asp.net mvc - Может ли viewengine найти представление? - PullRequest
1 голос
/ 15 мая 2009

Я обнаружил, что общая точка поломки в нашей настройке mvc - это когда контроллер возвращает

return View();

или что-то еще, и двигатель представления не может найти представление.

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

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

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

1 Ответ

1 голос
/ 16 мая 2009

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

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

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

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

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

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

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

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