MVC — принудительное построение и компиляция разметки razor View

#asp.net-mvc #testing #razor #frontend

#asp.net-mvc #тестирование #razor #интерфейс

Вопрос:

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

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

например @(Url.UserLink(UserActions.xxx))

Однако я нахожу странным, что я все еще могу ввести gobbledygook для параметра (т. Е. несуществующий элемент enum), и проект будет построен. Просматривая страницу, я получаю ошибку времени компиляции. Однако в модульном тестировании вызов контроллера проходит.

Кто-нибудь может предложить какие-либо обходные пути, каким-либо образом используя RenderView или что-то из теста? По крайней мере, код не должен компилироваться!?

Я не изучал интерфейсные тестеры, такие как WatiN или Selenium, но я предполагаю, что они появятся…

Ответ №1:

Только что нашел этот маленький самородок. Очевидно, что для поведения по умолчанию было сочтено не очень хорошей идеей разрешать компиляцию ваших представлений при сборке, вот как переопределить это (отредактируйте файл проекта web .csproj вручную):

 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    ...
    <MvcBuildViews>true</MvcBuildViews>
  </PropertyGroup>
  

Обратите внимание, что элемент «MvcBuildViews» является соответствующим.