'Относительный виртуальный путь приложения' ~ / 'здесь не разрешен' в модульном тесте на сервере сборки 2K3, но не на машинах разработчиков XP / Vista - PullRequest
8 голосов
/ 13 апреля 2009

Я макетирую HttpRequestBase, чтобы я мог создать HtmlHelper в тестовом коде и писать тесты для методов расширения HtmlHelper Я делаю это как часть кода установки:

httpRequestBase.Stub(h => h.ApplicationPath).Return("~/");
httpRequestBase.Stub(h => h.AppRelativeCurrentExecutionFilePath).Return(appPath);
httpRequestBase.Stub(h => h.PathInfo).Return("");

, который на двух компьютерах разработчика (одна под управлением XP, другая под 64-битной Vista) работает нормально. Однако на машине сборки Windows Server 2003 тест завершается неудачно, когда я вызываю RouteLink () в HtmlHelper, например:

System.ArgumentException: относительный виртуальный путь приложения '~ /' здесь не разрешен. в System.Web.VirtualPath.Create (параметры String virtualPath, VirtualPathOptions)

В обоих случаях я использую NUnit 2.4.8 и графический интерфейс NUnit в качестве тестового прогона. Насколько я могу судить, все остальное идентично, кроме ОС: та же версия RhinoMocks (3.5), та же версия ASP.NET MVC (RTM). Я попытался скопировать двоичные файлы с компьютера разработчика, а не использовать их на компьютере сборки, и это не имеет значения.

Когда я изменяю первую строку в коде настройки на это:

httpRequestBase.Stub(h => h.ApplicationPath).Return("/");

тест проходит на всех машинах.

Есть идеи, почему?

Ответы [ 2 ]

10 голосов
/ 16 апреля 2009

"~ /" не является допустимым значением для ApplicationPath. Смысл синтаксиса "~ /" в том, чтобы вы могли указать URL-адреса, относящиеся к ApplicationPath.

Для корневого сайта значение должно быть "/". Для сайтов в виртуальных каталогах это должно быть значение типа "/mysite".

4 голосов
/ 12 июня 2012

Свойство HttpRuntime.AppDomainAppVirtualPath работает в обеих ситуациях. Для веб-сайтов он возвращает «~ /», но в модульных тестах возвращает ноль, поэтому он не нарушает их.

Источник: http://ediblecode.com/blog/dev/testing-the-application-relative-virtual-path-is-not-allowed-here

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