Я макетирую 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("/");
тест проходит на всех машинах.
Есть идеи, почему?