Подтвердить что ты не робот

Единица тестирования просмотров?

Любая идея о том, как unit test просмотреть в ASP.NET MVC?

Мне не нравится встречаться с желтым экраном смерти, когда я запускаю проект MVC только потому, что забываю обновлять представления, когда один из методов Action моего контроллера меняет имя.

4b9b3361

Ответ 1

Вы можете написать интеграционные тесты, используя Watin, но если вам просто нужна быстрая проверка, чтобы увидеть, есть ли у вас какие-либо ошибки в ваши взгляды, вы также можете попробовать решение, упомянутое в этом сообщении: Как я могу скомпилировать страницы ASP.NET, прежде чем загружать их с помощью веб-сервера. Предварительно создайте свои страницы aspx, и вы готовы к работе!

Ответ 2

Установите <MvcBuildViews> в true в файле проекта, и компилятор сообщит вам об этой проблеме при создании.

Это предполагает, что ваш файл проекта также содержит следующий раздел (автоматически добавляется в ASP.NET MVC 1.0)

<Target Name="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
  <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
</Target>

Ответ 3

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

Джим Циммерман рассказывает о своем блоге о некотором коде, который он написал, чтобы динамически прекомпилировать его страницы просмотра ASP.NET MVC, чтобы найти какие-либо простые ошибки.

Вы также можете использовать Spark View Engine, который имеет функцию предварительной компиляции, вместо использования стандартного ASPX View Engine, который включен ASP.NET MVC. Это довольно драматическое изменение и, возможно, не вариант для вас;)

Если вам нужна дополнительная информация о Spark или других системах просмотра, Scott Hanselman имеет отличное сообщение в блоге, описывающее их и то, что они могут выглядеть.

Ответ 5

T4MVC, чтобы избежать магических значений

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

T4MVC - это именно то, чтобы избежать этих неприятных магических строк. Поэтому всякий раз, когда вы переименовываете метод действия, ваша компиляция будет ломаться, потому что старые ссылки на действия больше не будут существовать.

Единичное тестирование вида? Тестирование статических нефункциональных вещей?

Тестирование модулей - это тестирование функциональных аспектов вашего приложения, а не статических (в вашем случае это были бы ссылки в чьем-то другом случае, это было бы некоторые, которые я не знаю... CSS-классы или определенные HTML-элементы на странице). Это просто не покупает меня для модульного тестирования по просмотрам...

Таким образом, вместо того, чтобы тестировать свои представления, ваша проблема решена в корне.